得到OverflowError: math range error(尝试计算一个数的幂)

5

我正试图找到这个表达式的确切数字,但我找不到。以下是我尝试过的代码片段。

>>> math.pow(400.0,math.pow(400.0,400.0))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: math range error

当我尝试使用numpy时,我得到的结果如下:
>>> np.power(400.0,np.power(400.0,400.0))
>>> inf

但我无法得到确切的数字。有人能帮我吗?这对我来说将是一个巨大的帮助。
提前感谢。

这不是重复的@Bakuriu。我在我的项目中遇到了一个情况。您的支持将不胜感激,如果您能找到给我那个数字。谢谢。 - Anvesh
这个问题是一个重复的问题。如果你解决了你的问题,那么要么是因为你实际上使用的数字比你所问的要小得多,要么是因为你改变了方法。无论如何,由于你发布的问题与你现在所做的更改无关,它仍然是一个重复的问题。 - Bakuriu
感谢您的分析,@Bakuriu。但这并不适用于我的帖子。 - Anvesh
3个回答

4
您试图计算的数字有1.735057357739408×10^1041个十进制位数(来自wolframalpha)。您肯定无法得到其精确表示。inf是您可以获得的最接近的表示。

0

该数字无法用分配给存储整数的大小精确表示。使用sys.maxint查看您的最大整数,还有长整型,在62位框上可以如下查看

>>> import sys
>>> sys.maxint
9223372036854775807
>>> type(2**63)
<type 'long'>
>>> type(2**62)
<type 'int'>
>>> sys.maxint - (2**63 - 1) == 0
True

-2

2
由于这个数字的位数比可观测宇宙中的原子数量还要多得多,所以Wolfram不会给出精确的十进制表示。 - user395760
该页面无法提供精确数字,因为这是不可能的。 - Jayanth Koushik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接