这似乎是一个重复的问题,也许是,但我检查了许多其他来源,没有一个解决方案似乎有效。我试图计算的数字是9999999^999999,它是毫无意义的大,但我已经尝试了一段时间了。我想把结果写入一个文本文件。我通常会出现溢出错误,在尝试解决另一个问题后,我开始收到不同的溢出消息。有没有办法计算出这个数字?如果python不能做到这一点,还能做些别的吗
此时我的代码是:
from decimal import Decimal
#Attempt 2 (Attempt 1 was just print(999999**999999))
a = Decimal(999999**999)
a = a**(2) #Not close enough. 2.0002895717 would be perfect, but that would cause another Overflow: "OverflowError: int too large to convert to float"
print(a)
open("number.txt","x").write(str(a))
#Attempt 3, I tried breaking down the power into it's square root, and then that into it's square roots
massiveNumber = Decimal(999999**31.6227608)
massiveNumber = Decimal(massiveNumber**Decimal(31.6227608))
massiveNumber = Decimal(massiveNumber**Decimal(31.6227608))
massiveNumber = Decimal(massiveNumber**Decimal(31.6227608))
open("number.txt","w").write(str(massiveNumber))
错误:
Traceback (most recent call last):
File "unknowablenumber.py", line 13, in <module>
massiveNumber = Decimal(massiveNumber**Decimal(31.6227608))
decimal.Overflow: [<class 'decimal.Overflow'>]
是的,
decimal
可以准确、快速地完成,但您需要提高它使用的内部精度:这显示:
作为一种精神检查
因此
decimal
的结果具有正确的位数,前导位数匹配,最后10位数完全正确相关问题 更多 >
编程相关推荐