我正在使用Python 2.7.5。当将int提升到零的幂时,您可能会看到-1或1,具体取决于分子是正还是负。
直接键入python解释器会产生以下结果:
>>> -2418**0
-1
这是正确的答案。但是当我把它输入同一个解释器时:
>>> result = -2481
>>> result**0
1
答案是1而不是-1。使用complex
内置as suggested here对结果没有影响。
为什么会这样?
答案 0 :(得分:7)
为什么你会期望它是-1? 1是(根据我所教导的定义)正确答案。
由于运算符优先级,第一个给出了错误的答案。
(-1)**0 = 1
-1**0 = -(1**0) = -(1) = -1
请参阅维基百科,了解0指数的定义:http://en.wikipedia.org/wiki/Exponentiation#Zero_exponent
答案 1 :(得分:2)
-2418**0
被解释(数学上)为-1 * (2418**0)
,因此答案为-1 * 1 = -1
。指数在乘法之前发生。
在第二个示例中,您将变量result
绑定到-1
。下一行采用变量result
并将其提升为0
的幂,因此您得到1
。换句话说,你正在做(-1)**0
。
n**0
对于任何实数1
都是n
...除了0
:技术上0**0
未定义,但Python仍将返回{{1} }}
答案 2 :(得分:0)
你的数学错了。 (-2481)**0
应为1。
根据维基百科,Any nonzero number raised by the exponent 0 is 1
。