Python中的错误除法结果

时间:2017-04-15 05:58:55

标签: python

这是我第一次询问stackoverflow,我在使用python 2.7编程时遇到了麻烦。 我在这里有一个计算: 1350 / 2.7
确切的答案必须是500,但python给出答案499.99999999999994
我知道有些数字不能用二进制表示,导致浮动计算错误。
那么有人可以给我一个建议吗?如何处理呢?

3 个答案:

答案 0 :(得分:1)

您可以使用Decimal module。但是在您的特定情况下,您可以通过将分子和除数乘以相同的数字来避免此问题,以使除数成为整数,如下所示:

(1350*10)/(2.7*10)

当然与以下相同:

13500/27

答案 1 :(得分:0)

您可以使用python的内置round函数或数学ceil函数进行舍入

$ python
>>> round(1350/2.7)
500.0
>>> import math
>>> math.ceil(1350/2.7)
500.0

Here更多地解释了为什么会发生这种情况

答案 2 :(得分:0)

这是一个表示错误,请参阅https://docs.python.org/2/tutorial/floatingpoint.html#representation-error

您可以使用

检查是否为500.00
eps=1.0e-10
if abs(1350/2.7-500) < eps:
    ...

或者,只需使用round(number [,ndigits])