Was sollte print (-2 ** 2)
zurückgeben? Nach meinen Berechnungen sollte es 4
sein, aber der Interpreter gibt -4
zurück.
Ist das Python oder meine Mathematik so schrecklich?Berechnungsfehler mit PW-Operator
Antwort
Gemäß docs hat **
eine höhere Priorität als -
, daher entspricht Ihr Code -(2 ** 2)
. Um das gewünschte Ergebnis erhalten Sie -2
in Klammern
>>> (-2) ** 2
4
oder Einbau-verwenden pow
function
>>> pow(-2, 2)
4
oder math.pow
Funktion (Rückkehr float
Wert)
>>> import math
>>> math.pow(-2, 2)
4.0
Der **
Betrieb genommen könnte, ist vor dem Minus gemacht. Um die erwarteten Ergebnisse zu erhalten, sollten Sie
print ((-2) ** 2)
So werden in einer unparenthesized Folge von Macht und unäre Operatoren werden die Betreiber von rechts nach links ausgewertet (dies beschränkt nicht die Auswertungsreihenfolge für die Operanden):
-1**2
ergibt-1
.
Ein voller detail of operators precedence ist auch in der Dokumentation verfügbar. Sie können die letzte Zeile ist (expr)
sehen, die die ausdr zwingen, bevor sie verwendet ausgewertet werden, damit das Ergebnis (-2) ** 2 = 4
Sie auch Mathematik-Bibliothek ...
math.pow(-2,2) --> 4
-math.pow(2,2) --> -4
math.pow(4,0.5) --> 2
Python hat ein Problem verwenden können, und tut sehe die -2 nicht als Zahl. Dies scheint von Entwurf zu sein, wie es in den Dokumenten erwähnt wird.
-2 wird interpretiert als - (2) {einstellige minus auf positive Zahl 2}
dass in der Regel kein Problem, aber in -a nicht geben ** 2 die ** höhere Priorität hat als - und so mit - interpretiert als ein unärer operatoe anstelle eines Teils der Zahl -2 ** 2 ergibt -2 statt 2
- 1. Javascript - Berechnungsfehler
- 2. Prozentualer Berechnungsfehler
- 3. Javascript Formular Berechnungsfehler
- 4. sizeof Berechnungsfehler Mitglied
- 5. So vermeiden Sie Berechnungsfehler mit Primitiven
- 6. Perl-Sequenz Alignment-Score Berechnungsfehler
- 7. Gibt es einen Berechnungsfehler in meinem Programm?
- 8. Tableau Durchschnitt von "über dem Durchschnitt"
- 9. lmer Get p-Werte von anova
- 10. Mit zwei Befehlen (Rohr mit |) mit Laich
- 11. Umgang mit Daten mit MVC mit AngularJS
- 12. mit Deklaration mit enum?
- 13. Mit jQuery mit DevExpress
- 14. Mit NodeJS mit Typoskript
- 15. Mit MaterializeCSS mit Aurelia
- 16. mit ffmpeg mit Xcode
- 17. Mit AngularJS mit MeteorJS
- 18. mit Arrays.sort mit Lambda
- 19. Mit OpenBLAS mit GSL
- 20. mit DBMS_APPLICATION_INFO mit Jboss
- 21. Mit MvxCommand Mit Command
- 22. Mit Supercollider mit Python
- 23. Mit forever.js mit Python
- 24. Mit GraphiQL mit Foxx
- 25. Mit Moles mit System.Reflection
- 26. Probleme mit jQuery Mit
- 27. Mit Parsec mit data.text
- 28. Mit Repo mit msysGit
- 29. Mit html2Canvas mit HighCharts
- 30. Mit javac mit Import
Sie sollten (-2) ** 2 statt – sshashank124
Das '-' hat niedrigere Priorität als' ** '. Dies wird interpretiert als - (2 ** 2), nicht (-2) ** 2 ... – l4mpi
Der Hauptgrund, warum dies die meisten Leute verwirrt, ist, dass sie erwarten, dass '-2' eine wörtliche Bedeutung" negative 2 "ist, nicht ein Ausdruck, der "den Negationsoperator auf das Literal 2 zur Laufzeit anwenden" bedeutet. Sobald Sie verstehen, dass es ein Operator ist, ist die Tatsache, dass es ein Präzedenzfall ist, offensichtlich; bis du es tust, es ist verwirrend. (Deshalb werden alle Leute, die darauf stoßen, durch '-2 ** 2', nicht '-x ** 2' verwirrt.) – abarnert