“10%+10%”竟等于0.11手机自带计算器出了Bug?手机运营商:与国内外不同运算逻辑有关。
今天,一件趣事在网上炸开了锅:有网友在使用手机自带的计算器时发现,输入“10%+10%”后,得出的结果竟不是0.2,而是0.11。更让人瞠目的是,苹果、小米、华为等品牌无一幸免,仅有锤子、魅族两款手机独善其身。网友们纷纷质疑,这么简单加法问题都能算错,手机上的计算器真的除了Bug?对此手机运营商表示,这与手机的运算逻辑有关,严格地说并非手机算法错误。
![41118af4f7c0c88f50816f30c8aa2b53.png](https://i-blog.csdnimg.cn/blog_migrate/5a26973ff20d314d866d7922c84219b7.jpeg)
为了验证网友的说法,记者分别用苹果、小米、华为、荣耀、OPPO 等多款手机自带的计算器进行了测试。在苹果手机自带的计算器上,依次输入“10%+10%”,按下“=”后,结果竟真的显示为“0.11”。随后,记者又用20%、30%等不同数字进行了相加测试,结果同样出现了问题。在其他几款手机的测试中,小米、华为、荣耀、OPPO 4款手机也是如此。只有锤子、魅族两款手机自带计算器的计算结果为“0.2”。
![505d69534d361dccea8c1acab374ccb8.png](https://i-blog.csdnimg.cn/blog_migrate/2c66afbb57fb35c556153cecc09c5395.jpeg)
有人猜测,是每次输入“%”时,程序都会自动把前面的所有数放在一起做“%”的运算;也有人认为,计算器之所以得出的结果不同,区别在于非科学计算器和科学计算器——非科学计算器的计算逻辑,默认的连续百分比计算并非“10%+10%”,而是“10%+(10%×10%)”。记者在小米手机的计算器中测试,“5+10%的结果为5.5”,“20%+10%的结果为0.22”,是符合这一猜测的。
今天上午,华为荣耀总裁赵明给出了另一种解释,他在微博上表示:“国外盛行给应付费金额10%至20%不等的小费,这时按照国外的运算逻辑,比如餐费花了100元,还要再付10%的消费,用计算器计算100+10%,得出的结果110正是您需要付的餐费与小费之和。特别是数字不是整数时,这其实是国外一种方便计算的人性化设计。”荣耀手机的相关负责人介绍。
小米手机的工作人员向记者介绍,安卓计算器的运算逻辑认为100+10%里面的10%是指100的10%,也就是10而不是0.1。这是一种国外的运算逻辑,而我国的运算逻辑认为10%就是指0.1。所以就出现了用手机计算100+10%得出的结果是110,而非100.1。由于现在所有国产手机都是基于安卓系统的设计的,这是手机自带的运算逻辑,并非手机算法错误,因此国产手机大量中招也就不难理解了。 “如果手机厂商注意到了这个问题,要调整运算逻辑也是可以的。”小米手机的工作人员说,“对于这一BUG,此前已有小米网友反馈给了小米方面,目前小米已经进行了修正。” 打开小米手机的计算器,记者发现通过左下角的红色按钮可以在两种模式中进行切换。普通计算器模式也会出现问题,但在切换到科学计算器模式后,输入的10%就会自动被换算成0.1,计算结果也是完全正确的。
![78d9fefe06dfcb455d4d7232414c5a93.png](https://i-blog.csdnimg.cn/blog_migrate/99c38bd159763b92b8316adbdfbed1e9.jpeg)
华为官方客服则在给客户留言中的回复了应如何应对:“使用手机自带计算器计算A±B%时,百分数B%作为加数或减数,不再表示B/100这个数字本身,而表示的是被加数或被减数A的B%,即A*B%。所以A±B%=A±A*B%。小编建议您可以将百分数换算成小数进行运算,如0.022+0.025,您也可以给百分数加上括号,如(2.2%)+(2.5%)。”
作为少数计算正确的代表,魅族科技副总裁华海良也在微博解释了这一现象的原理。“‘10%+10%=0.11’这个是国外的使用逻辑,而国内的算术逻辑是‘10%+10%=0.2’。”华海良表示,魅族手机计算器因为针对不同地区进行了针对性设置,所以可以正确计算“10%+10%”。“其实本质上并不是对或错的问题,我们只是考虑的更多,增加了人性化的算法判断,针对不同地区的固件做了不同的算法判断。”
来源:北京日报客户端
作者:褚英硕、赵鹏、师悦
监制:陈岩、王远
编辑:谢永利
流程编辑:王宏伟