Python似乎无法将数字的正确值返回为零的幂。 当我给它一个文字方程时,它可以正常工作,但对于任何比原始数字更复杂的任何事物,它总是返回正数1。
下面是一些测试:0指数方程式上的符号故障
>>> -40 ** 0 # this is the correct result
-1
>>> (0 - 40) ** 0 # you'd expect this to give the same thing, but...
1
>>> a = -40 # let's try something else...
>>> a ** 0
1
>>> int(-40) ** 0 # this oughtn't to change anything, yet...
1
>>> -66.6 ** 0 # raw floats are fine.
-1.0
>>> (0 - 66.6) ** 0.0 # ...until you try and do something with them.
1.0
UPDATE:pow()
给出了这样的结果,也因此可能是第一个结果是例外...
>>> pow(-60, 0)
1
难道是有些问题,符号的整数?我需要一个值为1,-1或0的三元开关,具体取决于输入是正值还是负值,或者是零。我能做到同样的事情类似:
if val > 0: switch = 1
elif val < 0: switch = -1
else: switch = 0
...然后使用变量开关我的目的。
但是这并不能回答我关于Python如何处理零功耗的问题。
(我也将接受-40 ** 0
只返回-1 意外(惊人),但我怀疑这样的话......)
任何引起'0'的幂的非零整数应该返回一个'+ 1'。所以'(0-40)** 0'正确地产生了一个'+ 1'。 “-40 ** 0”返回一个“-1”的原因是因为**比'-'更强烈地与'40'结合。 – eigenchris 2014-12-03 20:53:49
那么我认为'a = -60; a ** 0 - > 1'评估为“(-60)** 0”?这对我来说很有意义。 – Augusta 2014-12-03 21:37:04
这是正确的。 :) – eigenchris 2014-12-03 21:38:53