为什么 -2**2 == -4 但 math.pow(-2, 2) == 4.0?

Why is -2**2 == -4 but math.pow(-2, 2) == 4.0?

为什么这两个语句不等价?

>> math.pow(-2,2)
4.0
>> -2 ** 2
-4

Python 3.5.3(默认,2017 年 1 月 19 日,14:11:04)

运算符的执行顺序(运算符优先级)在这里很重要:对于 -2**2,首先执行 2 的 2 次幂,然后是负号。

使用括号获得想要的结果

(-2)**2 = 4

您可以从 the Python3 documentation 查看优先级。

-2**2

计算为:-(2**2) = -4.

因为'-'的优先级在'**'的优先级之后,所以先用(-2)**2计算-2