我正在写一些代码来生成数学常数e(欧勒数)的数字,精度可以任意
from decimal import Decimal, getcontext
import decimal
s = 300_000
n = Decimal(1)
x = Decimal(1)
print("[+] Summing numbers...")
getcontext().prec = s
for i in range(s, 1, -1):
x *= i
n += x
result = (n / x) + Decimal(1.0)
它的迭代次数为200k或更少,但如果我将精度设置得高于此值,则会失败
[+] Summing numbers...
Traceback (most recent call last):
File "D:\OneDrive\Desktop\PYTHON\py\trig\log\calc e\e1_2.py", line 12, in <module>
x *= i
decimal.Overflow: [<class 'decimal.Overflow'>]
>>>
如何使用python存储非常大的数字,即数十万位长的数字,而不抛出十进制。溢出错误
你的问题按计算顺序进行。看看你的求和循环:
这将计算出
300000!
(阶乘),这是您的溢出问题。您已超过十进制软件包的最大值您需要研究所需值的连续近似值,而不是试图划分两个巨大的量
或者,您可以切换到Python大整数。这将是非常缓慢的,但你会得到你的结果
存在}
decimal
模块,用于十进制,即基数为10的表示。对于具有任意精度数字的计算,请使用int
和^{相关问题 更多 >
编程相关推荐