9月3日,话题“手机计算器全线阵亡”登上热搜榜,消息称苹果、华为、小米、OPPO等各厂商手机计算器都出现了神奇的bug,不少手机计算机计算“10%+10%”时,得出的结果是0.11,而不是正确答案0.2……
业内人士随后展开科普,表示这看起来是个Bug,但最终结果其实是计算器处理运算符号的逻辑所导致。
有网友用iphone X、iphone X max、华为mate 20 pro等机型测试都出现类似情况,比如“30%+20%”得出结果为0.36,“50%+50%”得出结果分别为0.75。
有网友还测试了下Windows 10上的计算器,在标准情况下,10%结果是0。在科学计算器模式下,并没有给出%的符号。
业内人士称,这是普通计算器和科学计算器的区别,人计算时,会优先考虑加减乘法的优先级,先做除法再做加法,结果就是(10%)+(10%)=0.2。如果是非科学计算器的计算逻辑则是认为连续百分比计算,即10%+10%按照10%+(10% x 10%)逻辑计算得出0.11的结果。
简单来说,部分手机计算器会默认把A+10%理解成A+Ax10%,而非A+0.1,对于截然不同的结果,网友们也是议论纷纷。一时间,网友们拿起自己的手机开始算了起来,不过结果基本都是0.11,当然也有个别手机例外。
在网友的测试中,华为、苹果、OPPO、小米多默认采用A+Ax10%的逻辑给出答案,其中小米在科学计算器下,有的用户显示结果是0.2,有的依然显示为0.11。
而魅族、锤子、努比亚等少数机型未“躺枪”。
手机企业高管怎么看?
9月3日上午,华为荣耀业务部总裁赵明就此发表个人观点,他解释到:“实际上这有一个背景,就是算小费等特殊场景,很多国家餐厅吃饭给10-20%的小费,这时100+10%相当于100+100*10%,相当方便的一种人性化设计”。
赵明也在其微博上积极征求网友意见:“那么到中国要不要改过来呢?”。
魅族华海良对此的解释是,“这个话题引发了不少讨论,其实本质上并不是对或错的问题,我们只是考虑的更多,增加了人性化的算法判断。10%+10%=0.11这个是国外的使用逻辑,而国内的算数逻辑是10%+10%=0.2,所以我们针对不同地区的固件做了不同的算法判断。”
小米产品总监、MIUI体验总负责人小凡也在微博进行了回应。@MIUI小凡 指出,“10%+10%”是目前全球标准的计算逻辑,最早的电子计算器并没有%,是后来加入的。作为后续改进,它一定程度上解决了计算场景中的常用痛点,特别是在西方人计算折扣、小费、利息等场景时,这样的计算逻辑会变得无比实用。
@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%,自带转换),所以更改行为给国内用户带来的好处很小,而一些习惯了%用法的人却会崩溃,综合考虑还是择优统一了用法。
编辑:金婉霞
责任编辑:顾军
来源:电子工程网、中关村在线、新浪科技