gpt4 book ai didi

python-3.x - Python浮点精度和

转载 作者:行者123 更新时间:2023-12-03 14:49:32 25 4
gpt4 key购买 nike

我在python中有以下数组
n = [565387674.45, 321772103.48,321772103.48, 214514735.66,214514735.65,
357524559.41]

如果我总结所有这些元素,我会得到:

sum(n)
1995485912.1300004

但是,这个总和应该是:

1995485912.13



通过这种方式,我知道了浮点“错误”。我已经使用了 isclose()来自 numpy 的函数来检查更正的值,但是
这个限制是多少?有什么办法可以减少这种“错误”?

这里的主要问题是错误传播到其他操作,例如,以下断言必须为真:
assert (sum(n) - 1995485911) ** 100 - (1995485912.13 - 1995485911) ** 100 == 0 .

最佳答案

这是浮点数的问题。一种解决方案是将它们以字符串形式表示并使用 decimal模块:

n = ['565387674.45', '321772103.48', '321772103.48', '214514735.66', '214514735.65',
'357524559.41']

from decimal import Decimal

s = sum(Decimal(i) for i in n)

print(s)

打印:

1995485912.13

关于python-3.x - Python浮点精度和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51312279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com