[英]The problem of converting very large numbers to infinity in Python
我想计算大数并在最后绘制这些图,但它为其中一个数据提供了无穷大我应该如何处理它给我的数字?
from decimal import Decimal
q=10**23
N=10**10
x=0
while True:
try:
a=Decimal(((q+N)/q)**q)/1
break
except OverflowError:
x+=1
q=q/10
num=str(a).split("E+")
num[0]=float(num[0])
num[1]=int(num[1])
for i in range(0,x):
num[0]=num[0]*num[0]
num[1]=num[1]+num[1]
j=str(num[0])+"e+"+str(num[1])
j=Decimal(float(str(num[0])+"e+"+str(num[1])))
print(j)
j 是 1.0428350774673307e+377487360 但它给出了 Infinity
更改此行:
j=Decimal(float(str(num[0])+"e+"+str(num[1])))
对此:
j=Decimal(str(num[0])+"e+"+str(num[1]))
当您将一个巨大的数字转换为浮点数时,它超出了可以表示的值集。 然后巨大的数字变成无穷大。 这种方法将起作用,因为您通过该中间瓶颈执行 go 。
print(j)
# Decimal('1.0428350774673307E+377487360')
而且——想想你为什么要这样做。 你几乎不需要这么大的数字。 可能有更好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.