打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
什么智能手机,全特么是傻子



终于有人注意到这个问题了!
每个人的手机当中,都藏着一个难以察觉的“漏洞”
它也许微不足道,但运气不好,也可能会酿成财产损失。
嗯,就是前两天上了热搜的——
事情是这样的……
机哥先问问大家一个简单的计算题。
10% + 10% =?
毫无疑问,答案是 20%。
如果用小数表示,也就是 0.2。
可据网友们反映,这道简单的计算题,却让大部分品牌的手机阵亡。
巧了,机哥啥都缺,唯独不缺手机。
所以分别拿出主流品牌的手机,试了试。
结果如下:
华为
10% + 10% = 0.11
小米
10% + 10% = 0.11
OPPO
10% + 10% = 0.11
vivo
10% + 10% = 0.11
一加
10% + 10% = 0.11
国产热门品牌全线阵亡……我们来看看国外的厂商。
苹果
10% + 10% = 0.11
三星
10% + 10% = 0.11
看来无论是国产,还是国外品牌,无一例外地栽了。。
真的无一幸免吗?
当机哥绝望地把目光投到国产小厂,希望出现了。
魅族!

感动,这就叫极致打磨啊朋友们。
除此之外,网友说另一家小厂商——锤子,也能通过这次考验。
机哥拿出坚果 R1 试了一下。
锤子的计算机常规界面……并没有 % 这个符号。
咱只能切换到科学计算器上。
果然,它也算出了我们想要的答案。
10% + 10% = 0.2
但是,普通计算器和科学计算器逻辑肯定会有不同,对比稍有点不公平。
OK,所以机哥今天,决定把“年度最佳计算器”的称号……
颁给魅族!
不过,凡事咱们不能只看表象。
手机厂商们齐刷刷“阵亡”,背后的原因到底是什么?
其实拿小米做运算的时候,端倪就已显现。
你们仔细看看机哥输入的动作:
当机哥输入第一个 10%,算式栏会直接把它转化成 0.1。
可第二个 10%,却被转化成 0.01。
这么一相加,结果当然是 0.11。
可问题是,计算器为什么会把第二个 10% 识别为 0.01 呢。
其实稍微想想咱就能明白,计算器认为“+10%”在人类的语境中,代表的是“加前一个数的 10%”。
所以尽管输入的是10% + 10%,计算器实际执行的是10% +(10% x 10%)。
今天一早,小米产品总监@MIUI小凡,和荣耀总裁赵明,不约而同地在微博上解释了这件事。
他们都有提到一个情境,可能会让你更加理解这样做的意义。
欧美那边的餐厅,时常会有给小费的习惯。
假设机哥消费 200 块钱,给 10% 小费,请问最后我该给多少钱?
如果按严谨的算术规则来写,应该是:

这对于从小精通算术的中国人来说,没毛病。
但对于那些算术稍弱的欧美人来说,就不是这样了。
他们习惯于口语表达,200 块,加 10%。
然后双手跟着大脑,在键盘里按下 200 + 10% 这样的算式。
为了“迁就”他们,手机系统无论是安卓还是 iOS,都会把不严谨的算式自动转化一番
最后他们还是能得到正确答案 220。
OK,现在你们理解手机,为什么会出 10% + 10% = 0.11 这种问题了吧。
只不过是套用了这个优化规则而已。
而转换到科学计算器之后,部分品牌又恢复了理智。
比如小米:
话说,虽然这一话题最近才在国内引爆。

但国外有网友早在 2016 年,就对这件事产生过迷惑。
这位网友的质疑正好和我们相反

他觉得100+10%=100.1是错的


而且,手机的计算器不是第一次出错了

2011 年,MIUI 论坛上出现过这样一则帖子:

《【惊爆低级错误】Android 计算器出错!!!》


这位网友在 HTC Desire 手机的计算器中输入:

14.52 - 14.49 =

答案本该是 0.03。

但他的计算器算出来是 0.0299999……

图片来自MIUI论坛

这个错误就不是 feature,而是一个实打实的程序缺陷

接下来拿出小本本,机哥来给大家讲解一下,为什么会出这种错误。

——轻度烧脑时间开始——

我们知道,手机计算器虽然是用十进制显示,但背后的运算靠的依然是二进制

也就是说,当我们输入 10 + 10,计算器幕后实际执行的是 1010 + 1010。

(十进制的 10 转换为二进制就是 1010)


所以回到楼主提出的算式:14.52 - 14.49。

问题就出在 14.52 和 14.49 这两个数,虽然在十进制中看起来清爽无比。

但转换为二进制的时候,它们会变成无限循环的数

(为什么无限循环机哥就不说了,那是数学上的问题,我们知道结果就好)

你看,机哥用的这个二进制转换器,就提示“超出计算精度”。



没办法,超出就超出吧,咱们用这个只保留 16 位的小数,进行下一步运算。

两者相减,等于 0.0000011110101110


再把它转换回十进制,结果是:

这个转换器精度只有16位,把我输入的数略掉了一位

看吧,0.029998779296875,错误答案就是这样出来的。

而早期安卓手机计算器的浮点精度,虽然比机哥的 16 位高,但也是有限的。

所以他们的答案是 0.0299999……

——轻度烧脑时间结束——

总而言之,这个问题不是 MIUI 的错,也不是 HTC 的锅,都是来源于 Android。

当时的安卓手机几乎全部中枪。

你们不用拿出手机试,这个 bug 早就被修复了。

除了安卓,iOS 也闹过所谓的计算器 bug

2017 年,苹果推出 iOS 11。


有网友反映自带的计算器,在计算 1+2+3 这样的幼儿园算术题,居然会给出 24 的结果。


出 bug 的原因非常简单,就是因为用户第一次点击“+”,它会有个淡入淡出的动画。

一旦输入太快,动画还没结束时,用户第二次点击的“+”无法被识别。

所以算式会从“1+2+3”变成“1+23”,答案自然变成 24。

后来苹果在 iOS 11.2 版本中,粗暴地去掉加号的淡入淡出动画,修复此 bug。

图片来自Benjamin Mayo

再后来的 iOS 11.3,苹果加回动画,提高响应速度,彻底解决这个问题。

图片来自Benjamin Mayo

看了这么多计算器 bug,是不是对咱们手中的“智能”手机产生怀疑了呢。

要我说嘛,还是学好数理化,背熟九九乘法表,凡事靠自己才是硬道理。

最后,送上今天的福利:继续送蓝牙键盘!电脑手机都能用,安卓iOS通杀,最好玩的是,能同时连10个设备。

Get方式很简单,只需要:加入机哥的搞机圈!一定要点加入哦,加入后才能抽取蓝牙键盘。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
物尽所用 Windows的计算器
智能手机算错简单数学题
有没有一键把十进制转换成二进制的计算器?用它直接转
怎样快速把十进制转换为二进制?
苹果的这个新bug让它输给了一个计算器
千万不要用IOS11计算器,分分钟被骗
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服