在Python 3.11上有:
python --version
Python 3.11.13
>>> a=[0.000001]*1000
>>> sum(a)
0.0010000000000000152
>>> import math
>>> math.fsum(a)
0.001
在Python 3.14上
>>> a=[0.000001]*1000
>>> sum(a)
0.001
----
分析 sum()函数的精度提升了!
----
sum(iterable, /, start=0)¶
从 start 开始自左向右对 iterable 的项求和并返回总计值。 iterable 的项通常为数字,而 start 值则不允许为字符串。
对于某些用例,存在 sum() 的更好替代。 拼接字符串序列的更好、更快的方式是调用 ''.join(sequence)。 要以扩展的精度执行浮点数值的求和,请参阅 math.fsum()。 要拼接一系列可迭代对象,请考虑使用 itertools.chain()。
在 3.8 版本发生变更: start 形参可用关键字参数形式来指定。
在 3.12 版本发生变更: 浮点数的求和已切换为一种可在大多数构建版本中给出更高精确度和更好适应性的算法。
在 3.14 版本发生变更: 添加了复数求和的特殊化,使用与浮点数求和相同的算法。

1732

被折叠的 条评论
为什么被折叠?



