Python sum() 对同一个列表进行不同排序时给出舍入误差

Python sum() gives a round off error on the same list sorted differently

sum(sorted([0.16666666666666666, 0.08333333333333333, 0.08333333333333333, 0.08333333333333333, 0.08333333333333333, 0.16666666666666666, 0.16666666666666666, 0.08333333333333333, 0.08333333333333333]))

给出 0.9999999999999999 作为输出,而同一个列表具有不同的元素排序,例如

sum([0.16666666666666666, 0.08333333333333333, 0.08333333333333333, 0.08333333333333333, 0.08333333333333333, 0.16666666666666666, 0.16666666666666666, 0.08333333333333333, 0.08333333333333333])

输出 1。

如果前一个输出可以四舍五入为 1,有什么办法吗?

未排序列表是对 python2.7 代码执行操作的输出。将我们的代码迁移到 python 3.8 后,操作的输出更改为排序列表,这影响了总和输出。

您可以在可迭代对象中使用 math.fsum(iterable) function.it returns 精确的浮点值总和。