gpt4 book ai didi

python - 小数在提高到 1 的幂时会失去准确性

转载 作者:行者123 更新时间:2023-11-30 22:33:19 26 4
gpt4 key购买 nike

我在使用 Decimal 的程序中遇到了一些准确性问题。

一个简单的重现:

from decimal import Decimal

print Decimal(1910944005427272400562113336049664)
print Decimal(1910944005427272400562113336049664)**1
print int(Decimal(1910944005427272400562113336049664)**1)

给予:

1910944005427272400562113336049664
1.910944005427272400562113336E+33
1910944005427272400562113336000000

如您所见,原始值稍微变小了(准确地说是负 49664)。

现在,我的实际代码所做的不仅仅是将数字提高到 1 次方,因此我最终的准确性会下降。

有没有我可以使用的“更好的十进制”?

我的输入和输出介于 0(含)和 2^256(不含)之间。

最佳答案

the documentation 中所述,“十进制模块具有用户可更改的精度(默认为 28 位)”。您可以将精度设置为更高的值以获得准确的结果:

>>> decimal.getcontext().prec = 100
>>> print(int(Decimal(1910944005427272400562113336049664)**Decimal(1)))
1910944005427272400562113336049664

关于python - 小数在提高到 1 的幂时会失去准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184670/

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