6

可能重复:
带有浮点数的 Python 舍入错误

Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> 4.2 - 1.8
2.4000000000000004
>>> 1.20 - 1.18
0.020000000000000018
>>> 5.1 - 4
1.0999999999999996
>>> 5 - 4
1
>>> 5.0 - 4.0
1.0

为什么 Python 的数学会出错?

4

2 回答 2

366

你在计算机科学方面已经达到了一个新的水平,你已经成年了。

因此,您现在已为下一步做好准备。我已得到 BDFL本人的授权,可以向您透露以下超级机密文件。古人先了解,先破译,现在,你也一样!

浮点指南

小心对待这份文件!仅与您认识的人分享此信息,得出同样令人费解的结论!


主持人的话

这个答案并不代表 Stack Overflow 上的预期质量标准。然而,它出人意料地发展了自己的生命,现在仅出于历史意义而保存。

于 2012-08-14T11:04:04.170 回答
54

对于浮点运算如何工作的非常严格的指南,有关如何计算答案中的误差有多大的完整说明,您需要:

每个计算机科学家都应该知道的关于浮点运算的知识

读完之后,你应该去寻找关于 8087 的特别说明,因为它对 IEEE 754 的实现很差,这可能会给你的生活带来新的令人兴奋的问题。

于 2012-08-14T12:13:22.947 回答