2017-08-28 3 views
4

Warum sind diese beiden Aussagen nicht gleichwertig?Warum ist -2 ** 2 == -4 aber math.pow (-2, 2) == 4.0?

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

Python 3.5.3 (Standard, 19. Januar 2017, 14.11.04)

+2

Die Antwort ist: https: //docs.python .org/3.5/reference/expressions.html # operator-precedence. '**' hat eine höhere Priorität als das unäre negative '-'. Außerdem ist '**' recht assoziativ. In der Praxis bedeutet Rechtsassoziativität, dass "a ** b ** c = a ** (b ** c)". – nbro

Antwort

6

Die Reihenfolge der Ausführung der Betreiber (Operator Vorrang) zählt hier: mit -2**2, die Potenzierung von 2 bis zuerst wird die Potenz 2 ausgeführt, dann das negative Vorzeichen.

Verwenden Klammer das gewünschte Ergebnis

(-2) ** 2 = 4

1

weil der Vorrang der '-' hinter dem Vorrang von '**' ist, verwenden (-2) ** 2 berechnen -2 auf dem ersten