当前位置: 代码迷 >> python >> 简单求和的Python舍入错误
  详细解决方案

简单求和的Python舍入错误

热度:74   发布时间:2023-07-14 08:47:28.0
>>> sum([0.3, 0.1, 0.2])
0.6000000000000001

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

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

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对象。

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