>>> sum([0.3, 0.1, 0.2])
0.6000000000000001
>>> sum([0.3, 0.1, 0.2]) == 0.6
False
我该怎么做才能使结果正好是0.6? 我不想将结果舍入到一定数量的十进制数字,因为那时我可能会失去其他列表实例的精度。
答案 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()
。