这是我第一次询问stackoverflow,我在使用python 2.7编程时遇到了麻烦。
我在这里有一个计算:
1350 / 2.7
确切的答案必须是500,但python给出答案499.99999999999994
我知道有些数字不能用二进制表示,导致浮动计算错误。
那么有人可以给我一个建议吗?如何处理呢?
答案 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.00eps=1.0e-10
if abs(1350/2.7-500) < eps:
...
或者,只需使用round(number [,ndigits])