根据文档,math.pow
函数的运行方式为:
def pow(x, y):
"""
pow(x, y)
Return x**y (x to the power of y).
"""
pass
我决定乱用大号,但是当我运行时我收到错误:
import math
calc = math.pow(1000, 103)
print(calc)
Traceback (most recent call last):
File "test.py", line 3, in <module>
print(math.pow(1000, 103))
OverflowError: math range error
但是,以下内容并非错误:
calc = 1000 ** 103
print(calc)
>> (very large number)
如果假设math.pow
作为x**y
运行,为什么它会抛出OverflowError
,而明确执行x**y
则不会?{/ p>
答案 0 :(得分:5)
math.pow
使用的浮点数限制在1e308左右。如果您需要某个功能,请仅使用pow
或operator.pow
(请注意这些不一样)。
operator.pow
正是来自x ** y
的操作,而pow
是一个三参数函数来计算x ** y % z
,其中z可以省略。
答案 1 :(得分:0)
math.pow
使用C
编译代码以及float
中1.2E-38
到3.4E+38
中C
的限制。只要结果超过3.4E+38
,就会抛出OverflowError
。