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