2016-04-20 59 views
3

這是我注意到的奇怪現象。爲什麼` - (num)**(even_number)`給出' - (num ^(even_number))`作爲結果?

爲什麼-5 ** 2給出-25和math.pow(-5,2)給出25的任何特定原因?答案應該是25.那麼-25答案的原因是什麼?

>>> -5**2 
-25 
>>> -5**4 
-625 
>>> 5**2 
25 
>>> 5**4 
625 
>>> import math 
>>> pow(-5,2) 
25 
>>> pow(-5,4) 
625 
>>> 
+2

答案很簡單:操作 –

+3

請不要發表圖片的代碼的順序,[見這個元后(https://meta.stackoverflow.com/q/可以使用支架通過先向否定3933332分之285551)。 –

+0

@BhargavRao - 會記住這一點。謝謝。 –

回答

2

documentationmath.pow規定,它提出xy力量。因此,math.pow計算(-5)**4。而僅僅編寫-5**4相當於-1 * 5 **4,因爲通過Python中的運算符優先級,一元運算符-的優先級低於電力運算符**

1

這是因爲Python中的運算符優先級。

如果我們看一下operator precedence,我們看到的是一元運算符-x比電運營商x**y較低的優先級,使得表達-5**2意味着方先向5,然後應用負號結果。這第一次操作給出25,然後給出-25。

表達式math.pow(-5,2)表示平方-5。這相當於(-5)**2

1

這是因爲-運營商的優先級低於電力運營商**。其實你的表現將被計算如下:

>>> -(5 ** 2) 

請嘗試以下方法得到正確的結果:

>>> (-5) ** 2 
25 

欲瞭解更多信息,你可以閱讀python Operator precedence

下表概述Python中的運算符優先級,從最低優先級(最少綁定)到最高優先級(最多綁定)。

enter image description here

3

這是所有解釋in the documentation

功率操作地結合不同於在其左側一元運算符更緊密;它與右側的一元運算符的綁定更緊密。因此,在權力和一元運算符的非親密序列中,操作符從右到左進行評估(這不會限制操作數的評估順序):-1 ** 2的結果爲-1。

4

在Python的**運營商具有higher precedence-操作者,所以在表達式5 ** 2首先計算,然後取反。

>>> -5**2 
-25 
>>> (-5)**2 
25 
相關問題