使用简单求和的Python舍入错误

时间:2014-03-09 14:46:09

标签: python rounding precision

>>> sum([0.3, 0.1, 0.2])
0.6000000000000001

>>> sum([0.3, 0.1, 0.2]) == 0.6
False

我该怎么做才能使结果正好是0.6? 我不想将结果舍入到一定数量的十进制数字,因为那时我可能会失去其他列表实例的精度。

2 个答案:

答案 0 :(得分:4)

float几乎在所有语言中都是不精确的,因为它无法用二进制精确表示。

如果您需要精确的精确度,请使用Decimal class

from decimal import Decimal

num1 = Decimal("0.3")
num2 = Decimal("0.2")
num3 = Decimal("0.1")

print(sum([num1, num2, num3]))

这将是return令人满意的结果:

Decimal('0.6')  # One can do float() on this output to get plain (0.6).

方便的也是Decimal对象,您可以使用它。

答案 1 :(得分:0)

使用math.fsome()代替sum()