今天在写 JS 的时候无意中发现一个很有意思的问题:
>>> 0.7 + 0.1
0.7999999999999999
这个让我很诧异。另外我在 Python 和 Ruby 中试了一下,结果都是这个。
但是他们在计算
>>> 0.6 + 0.1
0.7
是正确的。 (当然以上只是部分例子。)
不知道各位有谁知道其中的原因。应该跟这些脚本语言处理浮点数的精度有关。现在先把问题贴出来,等明白了再来补充。
非常感谢各位的回答,迟了两天来解决这个问题,实在很抱歉。如同@比尔盖子所说的那样,我的确缺乏相关的浮点知识,于是这两天去看了一些相关的资料。回忆起了以前学习的知识。
再次感谢各位的回答。
与这两个问题类似
Segmentfault: 为什么 javascript 中 0.1 + 0.2 !== 0.3 为 True
http://stackoverflow.com/questions/6439140/int0-10-710-7-in-several-languages-how-to-prevent-this