看到这个标题,你可能会觉得震惊,怎么会不是0.2呢?
最近在知乎上看到这个有意思的问题,为什么手机上的计算器计算 10%+10% 都错了,结果不是0.2,而是0.11。
第一感觉是不可思议,赶紧拿出我的华为手机(EMUI版本为9.1)测试了下,果然是0.11!
看看谷歌的计算器,0.2没错。
但是搜索计算器 再计算的结果却是0.11,很奇怪。
然后在在线自动问答系统搜索引擎wolframalpha上看看https://www.wolframalpha.com/input/?i=10%25%2B10%25
它给出了3种结果,有0.2和0.11 。
ps:wolframalpha这个网站计算数学公式很不错,比如开根号算黄金分割比
搜索了下苹果和小米等手机都是如此。
然而魅族手机却是个例外。
魅族副总裁在微博上的解释是这样的 https://weibo.com/1444241363/I554TgDEs?
本质上并不是对或错的问题,我们只是考虑的更多,增加了人性化的算法判断。10%+10%=0.11 这个是国外的使用逻辑,而国内的算数逻辑是 10%+10%=0.2,所以我们针对不同地区的固件做了不同的算法判断。
算小费等特殊场景,很多国家餐厅吃饭给10-20%的小费,这时100+10%相当于100+100*10%,相当方便的一种人性化设计。
所以10%+10%是按照10%+(10% x 10%)这个逻辑得出0.11的结果,对应的10+10%就是11。
只能说国内和国外使用习惯不同,中国人没有付小费的习惯,而且我们一般是用0.1+0.1算的,这应该算计算器的feature,不算bug。
看看你的手机计算器结果是0.2还是0.11?