Android计算器低级错误
时间:2025-05-02
时间:2025-05-02
Android计算器低级错误?
Android 计算器惊现超级大 bug!在 Android 的计算器程序里输入 14.52 - 14.49,计算器竟然说它等于 0.0299999999!其实,这已经是计算机的老毛病了。计算机用二进制来表示数,将会不可避免地产生误差。
听说了 Android 的超级大 bug,我立即在自己的 HTC Hero 上试了一下,果然正如众人所说, 14.52 - 14.49 = 0.0299999999。稍作试验便可发现,一些更为简单的算式也会出现类似的问题,例如在 Android 计算器中输入 1.2 - 1.1,结果等于 0.0999999999。这是为什么呢?
都是二进制惹的祸
原来,在计算机内部,数字并不是用十进制来储存的,所有数字都是以二进制的方式储存的。但一个进制下的有限小数,很可能是另一个进制下的无限小数。比方说,把十进制小数 1.2 转换成二进制小数,将会得到一个无限循环小数 1.001100110011 ;把 1.1 转换成二进制小数则是 1.0001100110011 ,也是一个无限循环小数。计算机显然不能储存无穷多位数,因而不得不近似地截取有限多位。如果保留 52 位数的话,那么在计算机看来,1.2 - 1.1 其实是这样:
问题出现了:在显示计算结果的时候,计算机需要把它转换回十进制。但上面的结果转换成十进制并不是精确的 0.1,而是一个 52 位小数 0.09999999999999986677323704
49812151491641998291015625。由于 2 的 -52 次方约为 10 的 -16 次方,也就是说 52 位二进制小数的精度大约相当于 16 位十进制小数,因此计算机上通常只保留这个小数的 16 位有效数字。因此,上面这个小数也就成了 0.09999999999999987。
不只是 Android 的问题
你会发现,这样的问题在电脑里到处都有。例如,在你的浏览器地址栏里输入
javascript:alert(1.2-1.1)
你就会看见这个诡异的答案:0.09999999999999987。即使是专业的数学软件中,小数精度的问题也是不可避免的。在 Mathematica 中输入 1.2 - 1.1,答案似乎是没错:
但是,输入 InputForm[%] 查看这个 0.1 的真身,你会发现原来它也不是精确的:
也就是说,Mathematica 发现这个小数太接近 0.1,便猜测这个数真的就是 0.1,于是智能地帮我们化简了。很多计算器类的软件也有自动化简的功能,只是 Android 上的计算器做得似乎还不够好,偶尔会出现失误罢了。
其实,这个问题还不算离谱。在我的 Android 手机上输入 1.2 - 1.1 - 0.1,会得到一个更加诡异的结果:-1.38777E-16,也就是 -1.38777 × 10 -16 。这也是由于二进制表达的误差造成的。不过,较新的 Android 系统上似乎没有出现这个问题,可见 Android 处理小数的算法也是在不断改进的。
本文版权属于果壳网(http://www.77cn.com.cn),转载请注明出处。
原文地址:http://www.77cn.com.cn/article/27173/
照片也有DNA:Facebook也要建“绿坝”啦 Facebook要出“绿坝”了!难道一直高喊“互联网自由“的美利坚也妥协了吗?不要误会,Facebook此举只是为了遏制儿童色情内容在互联网上的传播。
微软与社交巨头 Facebook 刚刚宣布了一项新的合作项目:后者将借助微软研究院的 PhotoDNA (照片DNA)技术来识别在线图片中那些带有儿童色情内容的照片。
2009年,微软与达特茅斯学院共同开发了PhotoDNA技术,该技术旨在发现和消除来自互联网的儿童色情图片,其工作原理见下图。
微软将PhotoDNA技术首先应用在自家的SkyDrive、Hotmail和Bing搜索服务上,又将该技术捐给了NCMEC(美国失踪与受虐儿童援助中心)。在此之后,NCMEC就以PhotoDNA技术为基础建立了一整套完善的在线服务系统,用以打击儿童色情犯罪。
最近,Facebook宣布将采用微软的PhotoDNA技术来遏制儿童色情内容在网络上的传播。众所周知,微软和Facebook都有着极其庞大的用户基础和巨大的发展潜力,此类在线服务的跟进对优化互联网整体环境绝对大有益处。全球两家顶尖的互联网公司同时采用顺应市场“游戏规则”的领先技术,不得不说它们起到了很好的榜样作用。
PhotoDNA技术能够通过分析图片中所蕴含的数字指纹(digital fingerprints),来寻找网络上的匹配图像,即各种类型的相似图像。该技术的基本原理类似于杀毒软件中通常采用的病毒特征库机制,其图片识别准确率高达 99.7%,其误报率也小到几乎可以忽略不计——只有两亿分之一。PhotoDNA还使用了一种名为“强韧哈希”(robust hashing)的技术,保证其对修改或裁减后的照片同样有效。
微软数字罪案组的联营公司总法律顾问哈蒙说道:
“事实上,我们希望Facebook能将PhotoDNA技术作为其通向其他更多互联网服务供应商的跳板,通过充分利用NCMEC的项目来获得优势。与此同时,我们知道现在还有很多公司都在探索这方面的可能性,Facebook必须认清这一点。”哈蒙同时指出,PhotoDNA技术已经充分应用到了Bing和SkyDrive服务之中,用于识别那些令人恶心讨厌的图片,而不只是儿童色情图片。到目前为止,微软已经评估了两亿多张图片,这些图片事先都由NCMEC提供了数字签名服务。
如今Facebook用户数已达6亿之巨, 每天上传到Facebook服务器的照片也有两亿张之多。作为一个真实的社交网络,Facebook如何在不侵犯用户隐私的情况下审核用户的照片呢?微软称,PhotoDNA技术能在这方面做到两全其美。通过采用PhotoDNA技术,Facebook不仅可以对照片进行高精度审核 …… 此处隐藏:4619字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:取水许可证登记表
下一篇:甲苯产品包装说明和使用说明书