为何手机计算器 50%+50%=0.75?魅族:只有我们没阵亡

中关村在线

不出意外的话,这边会显示 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 呢?欢迎讨论。

免责声明:本文来自刘跃进,不代表浮光掠影知识网 - 专注有价值知识的生活内容平台的观点和立场,如有侵权请联系本平台处理。

相关阅读

发表评论

表情:
评论列表 (暂无评论,1283人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码