01手机计算50%+50%=0.75?
产品:20(12GB/128GB) 魅族 手机文章开始前,请你打开手机计算器,计算一下标题中的“50%+50%”,看看结果是几?
不出意外的话,这边会显示3种结果:
第一种,OPPO、vivo、小米等手机会显示为0.75;
第二种,魅族(以及部分小品牌)会显示为1;
第三种:iPhone系列会显示0.25,不过你再按一下等号,也是0.75。
是不是很神奇?再来算个好玩的,比如100+20%,小米等品牌会显示为120%,而魅族显示100.2。
为什么有两种答案呢?
1 50%+50%=0.75是怎么来的?
想象一下这个场景,你在爽玩一款刷装备的游戏,为了刷出优秀词条打得不亦乐乎。终于,Boss掉了一把属性还不错的装备,有一项“+15%近战伤害”。假如你的攻击力是100点,穿上它之后,伤害是多少呢?
相信玩家们都会脱口而出:115。应该没有人会认为是100.15吧?
图片来自网络 仅供参考
%,即百分比,是一种表达比例,比率或分数数值的方法。在这项计算中,我们会主动将100加15%伤害,转换为100+100×15%=115,心算无压力。但如果你穿了一整套装备,头盔+42%,靴子-17%,手套+50%,技能又+14%,这心算起来就有些困难了。
为了算出角色的最终伤害,你掏出计算器,按出以下算式:
就这一项算式,你就得按上几十下按钮,出一个错就会产生结果误差。而在金融等需要高度计算的行业中,需要计算的算式只会更加复杂,要按的按钮更多,“忙中出错”的可能性也就越大。
因此,函数式计算器就将百分数计算的逻辑进行了更改,A+B%=A+(A×B%)。这样一来,上面的计算式就简化为:
回到开头,手机计算器中的“50%+50%”带入上面的公式,最终结果就是0.75。
目前,A+B%=A+(A×B%)已经成为全球惯例。微软资深开发人员Raymond Chen曾在一份开发者日志中写道:“Windows计算器中百分键的工作方式与廉价的袖珍计算器相同,那些袖珍计算器上的百分键并不是为数学家和工程师设计的,而是针对日常计算而设计。如果你是一名工程师,可能认为这样的方式很反直觉,甚至出了Bug,但对一般民众就很合理。”
图片来自微软开发日志
从这篇日志可以看出,计算器开发者认为A+B%=A+(A×B%)这个算式是很普及的一种概念,如此定义并无问题。但在国内,绝大多数的用户应该都不认同这条算式,50%加上50%就是100%。如果国内用户想要用手机计算器计算两个百分比相加,就得额外加上括号,结果就对的上了:
其实如果更加深究的话,还要涉及到计算器算式堆栈等复杂的语言问题,这里就不再赘述了。
2 是懒得改,还是没必要?
既然手机计算器百分比计算这么“反人类”,为什么厂商不改呢?
现已从魅族科技离职的华海良曾在2019年9月发布博文,挂上了一个“手机计算器全线阵亡”的夸张话题。他表示,魅族的研发团队“想得更多”,增加了人性化的算法判断,所以针对不同地区的固件做了不同的算法判断。
对此,MIUI金凡也发文科普,给出了“中国人算力过剩,对西方同志来说却能救命”的解释:“其实之前我们改成过10%+10%=0.2,但后来决定还是遵循全球统一标准。因为中国人不太会去这么用%(我们会直接输入0.1而不是10%,自带转换),所以更改逻辑给国内用户带来的好处很小,而一些习惯了%用法的人却会崩溃,综合考虑还是决定回归和全球标准统一。”
金凡的原推文现在已经看不到了
金凡的发言其实很巧妙地转移了话题,让米粉们更容易接受,有种“照顾”国外同志的优越感。归结到底,手机计算器本来使用率就低,百分比符号使用得更是少之又少。个人认为,两种计算方式都能理解,没必要死磕意义上纲上线,实在要算百分比用小数就得了。
3 总结
之所以想起这个话题,还是因为魅族20系列的“重生”。Flyme系统一直致力于打造人性化系统,这次更改百分数计算惯例就是做出差异化的一次尝试——事实上也同样如此,当时这个话题也在社交媒体上给魅族带来了不小的热度,算是一次较为成功的革新。
你认为计算器中50%+50%该不该等于0.75呢?欢迎讨论。