注册 登录
编程论坛 闲聊灌水

10%+10%=0.11

李掌柜 发布于 2019-09-03 20:18, 2697 次点击
不是0.2么?我的手机的计算器是0.11
8 回复
#2
南山剑客2019-09-03 20:21
被当字符串处理了吧
#3
李掌柜2019-09-04 23:03
这个BUG是真的,我试了好多手机上的计算器,都是0.11
#4
外部三电铃2019-09-05 15:15
可能是计算器的理解顺序跟人的不一样,类似i++和++i的区别
#5
notime2019-09-08 02:27
10%+(10%)=0.2
的确是个BUG,一个脑残设计了计算器,后面的一堆脑残,看都不看,直接拿来用,错误一直延续,脑残!!!
#6
wmf20142019-09-08 08:31
利滚利计算器。第二个计算结果是上一个计算结果的10%,即10%=0.1,这个结果计算器寄存下来作为下一个计算的基础,所以第二个10%实际执行0.1*10%=0.01,最后执行加法0.1+0.01=0.11。估计计算器原先是为满足金融系统需求,设计理念如此,不能算bug。
#7
zbjzbj2019-09-08 20:53
这个不是bug。不信你按台式计算器10+7%看看显示多少?10.7而不是10.07
10%+10%算的是10%+(10%)的10%=0.11
就像C语言:a+=3 等效a=a+3一样,是为了简洁而创造的一种简化形式,计算机中这种逻辑很多。


#8
sdfwefsdd2019-10-18 09:01
经过多方取证,苹果,华为,小米,oppo,vivo,一加算出来是0.11,魅族,努比亚算出来是0.2。(就不放图了)为什么是0.11呢?因为这是外国人的习惯。(规则都是外国人定的)给大家看一个场景,某件商品搞活动,假设原价100块外国人:顾客:What's the discount?(折扣是什么)店员:20% off.(减少20%)顾客心算:100-20%=80中国人:顾客:有什么折扣?店员:打八折顾客心算:100×0.8=80这就是运算习惯不同,折扣off也是百分数主要的运用场景之一。而国人在生活中基本上不会用百分数,而更偏向于小数。因此10%+10%=1(默认初始值)×10%+1×10%×10%=0.1+0.01=0.11那么为什么10%+10%不能等于0.1+0.1=0.2呢?因为从本质上说,百分数只是一个比例而并非一个数值。比如你可以说“我的身高是你的90%”,但不能说“我的身高是180%米”。所以说单纯计算10%+10%是没有意义的,不论是国人还是老外都不会这么算。计算器算出10%+10%=0.11是建立在默认初始值是1的基础上的,单纯的百分数运算是没有任何适用场景的。因此算出0.11是完全正确的,无可非议。大家可以看一下这篇专业文章How does the calculator percent key work? | The Old New Thing​devblogs.少数厂商对这个算法进行了改动,使之更符合国人的习惯。下图是魅族副总裁华海良的微博所以说,这可以算是文化差异的一种体现,并不是bug或是其他的什么好了,完!
#9
ma30885944402020-01-19 22:34
1