繁体   English   中英

Python中将非常大的数转换为无穷大的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM