小米产品总监科普:为什么计算 10%+10% 会得到 0.11?
来源:IT之家 作者:沧海
在 OPPO、华为、 苹果 、小米等智能 手机 上使用自带计算器计算"10%+10%"的时候,得出的结果是 0.11,而不是 0.2。这一眼看起来是 Bug,但最终结果是计算器处理运算符号的逻辑导致的。
魅族华海良对此的解释是," 这个话题引发了不少讨论,其实本质上并不是对或错的问题,我们只是考虑的更多,增加了人性化的算法判断。10%+10%=0.11 这个是国外的使用逻辑,而国内的算数逻辑是 10%+10%=0.2,所以我们针对不同地区的固件做了不同的算法判断。"
刚刚,小米产品总监 @MIUI 凡发文《手机计算器全线阵亡终结贴》,详细的科普了为什么计算器会出现这样的运算结果。
以下为《手机计算器全线阵亡终结贴》全文:
鉴于昨日计算器百分号引发了大型社会悬疑,10%+10% 居然 =0.11,这究竟是代码的扭曲还是教育的沦丧,让我替大家揭开真相。
看一些文章几百字也没把道理说太清楚。鉴于超强的归纳 + 化繁为简的表达 = 聪明才智的体现,我尝试用一句话说清运算原理。以 8+10% 为例,为什么 =8.8 而不是 8.1?一起读:8 元钱,加上 10% 的小费,一共是 8.8 元。
以上就是目前全球标准的计算逻辑,但还有一个大家疑惑的问题:为什么计算逻辑要这么设计?于是这变成了一个历史思考题。
最早的电子计算器并没有 %,是后来加的。作为后续改进,它一定解决了计算场景中的常用痛点,而绝不是脑残。我推测很可能是西方人计算折扣、小费、利息等常见场景。
货物 560 元,20% OFF(打八折)多少钱?560-20%=448!
资方存入 2800 元,计年息 6%,本息总计多少?2800+6%=2968!
是不是一下子好用到爆。But,为啥我前面加了一个 " 西方人的计算场景 " 呢?因为我觉得对于算力过剩的中国人,很少人会这么思考和输入。
货物 560,砍两成就是 560*0.8=448;2800,6% 年息,就是 2800*1.06=2968。就是这么屌!直接省去了一步(国人这么优秀我 TM 能怎么办)
所以百分号键解决的痛点,中国人不太用的上,也不太会这么思考(这也是为什么今天才有人无聊去试 10%+10%)。但对于西方很多同志来说,这玩意真是能救命呀
最后说一下 MIUI 怎么想的。
其实之前我们改成过 10%+10%=0.2,这也是为什么有些用户科学计算器 =0.2,是残留的老版本,但后来决定还是遵循全球统一标准。
因为中国人不太会去这么用 %(我们会直接输入 0.1 而不是 10%,自带转换),所以更改行为给国内用户带来的好处很小,而一些习惯了 % 用法的人却会崩溃,综合考虑还是择优统一了用法。