为什么其中一个代码段工作而另一个抛出溢出

cob*_*bie 8 python exponential

我正在使用python,我正在努力寻找真正大数字的能力,但有趣的是,这会引发数学溢出

math.pow(1000, 1000)
Run Code Online (Sandbox Code Playgroud)

但是这下面似乎有效但我不知道返回的值是否正确

1000**1000
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么会这样

Mar*_*ers 8

很简单,该math.pow()方法使用C浮动库,而**幂运算符使用整数数学.

这两种方法有不同的局限性.Python的int大小只受操作系统允许Python拥有多少内存的限制,浮点数受到计算机体系结构的限制,请参阅sys.float_info.max.


Jos*_*Lee 7

math.pow:

与内置**运算符不同,math.pow()将其参数转换为type float.使用**或内置pow()函数来计算精确的整数幂.