python 浮点数求和sum()精度提升

在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 版本发生变更: 添加了复数求和的特殊化,使用与浮点数求和相同的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值