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但它给出了无穷大

改变这一行:

j=Decimal(float(str(num[0])+"e+"+str(num[1])))

:

j=Decimal(str(num[0])+"e+"+str(num[1]))

当你将一个巨大的数字强制转换为浮点数时,它在可以表示的值集之外。巨大的数字变成了无穷大。这种方法将会起作用,因为您将通过中间瓶颈。

print(j)
# Decimal('1.0428350774673307E+377487360')

但也要想想你为什么要这样做。你几乎不需要这么大的数字。也许有更好的办法。

最新更新