Python数学响

2024-09-28 01:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图用Python计算一个非常大的数字时,我得到了一个错误。这是我的代码:

# Where fourthNumber = 2790
# and dee = 413
emm = math.pow(fourthNumber, dee)

我的错误是:

line 44, in <module>
    emm = math.pow(fourthNumber, dee)
OverflowError: math range error

有办法避免这个错误吗?我以为Python可以处理任意大的数字?还是我错了?如有任何帮助,我们将不胜感激。谢谢!


Tags: and代码in错误line数字mathwhere
3条回答

问题是math.pow(..)对浮点数起作用。在Python中,浮点数不是任意大的。只有ints是(在中,而longs在中)。

但是,如果这两个数字是整数,则可以使用**运算符,该运算符可以进行整数幂运算(当然,参数是整数):

>>> 2790**413
10827693458027068918752254513689369927451498632867702850871449492721716762882046359646654407147290095143376244612860740505063304616869045757879636651922242895944635094287526023557872050108996014618928707382416906723717536207944990935946477343103732942220495426003253324856391048675505527041527544249845903325107575822015010197006079682477544271998209608154757421132764034059289159228295810448568286783859864141487725512980856505994152145510660350938086763233208252511256291934375881870590480237727775536326670654123168787472077359939510018827829233028430183558108518520524567765780717109616748933630364200317687291046055118737587697510939517252245710306646155772831436013971724481443654932630319085588147436112198934867224850036968074130558127066188475740553149587714112808551835880666012903651859580234129805580074844684526620091506655345299434455806896837926335229779632528684030400890708579038639280240022309690038032176604539091205540422068492362106868171343650410145963283813864374487990607671475570427243900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

但是,如果将其转换为float,则会得到:

>>> float(2790**413)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: int too large to convert to float

所以这个错误清楚地表明不能像floats那样处理这个大数字

内置的pow使用整数运算:

>>> pow.__module__
'__builtin__'
>>> pow is math.pow
False
>>> pow(2790, 413)
108276934...

您可以处理任意大的整数数;math.pow浮点数操作。

2790**413>;1000**413=1e+1239,远远高于大约1e+308的浮点范围。

使用**停留在整数域内,并获取您的大整数。

相关问题 更多 >

    热门问题