1

为什么会发生这种情况,我该如何避免这个问题?

Python 2.7.5 (default, Jun 27 2013, 09:29:43) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>  0.3 - 0.1 - 0.1 - 0.1
2.7755575615628914e-17
>>> 0.3 - 0.3
0.0
>>> 0.3 - 0.2
0.09999999999999998
4

1 回答 1

3

因为在内部,计算机使用的格式(二进制浮点)根本无法准确表示 0.1、0.2 或 0.3 之类的数字。

当代码被编译或解释时,你的“0.1”已经被四舍五入到该格式中最接近的数字,这会在计算发生之前导致一个小的舍入误差。

每个程序员都应该知道的关于浮点的知识:基本答案

此外,如果您有兴趣解决这个问题,请查看定点表示。Python 似乎有多种解决方案

于 2013-07-27T02:34:22.763 回答