1. 首页
  2. > 代理记账 >

10101010化成十进制是多少(将10101010写成十进制的数为多少)


每个人的手机当中,都藏着一个难以察觉的“漏洞”


它也许微不足道,但运气不好,也可能会酿成财产损失。


嗯,就是前两天上了热搜的——


事情是这样的……


机哥先问问大家一个简单的计算题。


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,苹果加回动画,提高响应速度,彻底解决这个问题。



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


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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123456@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息