在Python中浮动减法

时间:2013-07-27 01:25:19

标签: python-2.7

为什么会发生这种情况?如何避免此问题?

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

1 个答案:

答案 0 :(得分:3)

  

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

     

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

What every programmer should know about floating point: Basic Answers

另外,如果您有兴趣解决这个问题,请查看定点表示法。 Python seems to have a variety of solutions