Erklären Sie, warum 8%-3 in PHP gleich 0 ist.
Wenn wir in PHP versuchen, 8%-3 zu berechnen, erhalten wir einen Wert, der zu 0 führt. Dies könnte einige Entwickler verwirren, da wir in der Mathematik erwarten, dass das Ergebnis der Auswertung dieses Ausdrucks 2 sein sollte. Allerdings gibt es in PHP einige Sonderregeln für die Verwendung des Restoperators (%), die zu ungewöhnlichen Ergebnissen führen können.
Lassen Sie uns zunächst die Definition des Restoperators in der Mathematik verstehen. Der Restoperator wird verwendet, um den Rest nach der Division einer Zahl durch eine andere Zahl zu berechnen. In der Mathematik ist dieser Operator für positive ganze Zahlen intuitiv. Wenn wir beispielsweise den Rest von 8 dividiert durch 3 berechnen, erhalten wir 2. Dies liegt daran, dass 8 zweimal durch 3 teilbar ist, sodass ein Rest von 2 übrig bleibt.
In PHP ist dies jedoch nicht immer der Fall. Wenn der Restoperator auf eine negative Zahl angewendet wird, kann das Ergebnis je nach Vorzeichen von Dividend und Divisor negativ, null oder positiv sein. Insbesondere wenn der Dividend eine positive Zahl und der Divisor eine negative Zahl ist, lauten die Berechnungsregeln des Restoperators wie folgt:
Wenn der Dividend durch den Divisor geteilt werden kann, ist das Ergebnis eine negative Zahl.
Wenn die Dividende den Divisor nicht teilt, die Dividende aber positiv ist, ist das Ergebnis eine positive Zahl.
Wenn die Dividende den Divisor nicht teilt, die Dividende aber negativ ist, ist das Ergebnis eine negative Zahl.
Als nächstes analysieren wir, warum das Ergebnis von 8%-3 in PHP 0 ist. Gemäß den oben genannten Regeln können wir wissen, dass 8 eine positive Zahl und -3 eine negative Zahl ist, daher sollte das Ergebnis eine positive Zahl sein. Während des spezifischen Berechnungsprozesses führt PHP jedoch einige interne Verarbeitungen durch.
Bei der Berechnung von 8%-3 berechnet PHP zunächst die größte ganze Zahl n, sodass n mal -3 kleiner oder gleich 8 ist. In diesem Beispiel ist n=2, da 2 mal -3 gleich -6 ist, also 8 oder weniger. PHP addiert dann -6 zu 8, um das Endergebnis 2 zu erhalten. Das Ergebnis ist also 2 und nicht 0.
Warum ist das Ergebnis dann 0? Dies liegt daran, dass der Restoperator auch vom Datentyp des Dividenden beeinflusst wird. Wenn der Dividend eine ganze Zahl ist, beispielsweise 8, ist das Ergebnis 2. Wenn es sich bei der Dividende jedoch um eine Gleitkommazahl wie 8,0 handelt, beträgt das Ergebnis 0.
Das liegt daran, dass, wenn der Dividend eine Gleitkommazahl ist, die Berechnung in PHP ihn in eine Ganzzahl umwandelt, d. h. 8,0 in 8 umwandelt, und dann die Berechnung gemäß den zuvor genannten Regeln durchführt. Da 8 -3 nicht dividiert, ergibt es 0.
Zusammenfassend lässt sich sagen, dass der Grund dafür, dass das Ergebnis von 8%-3 in PHP 0 ist, in der Auswirkung der Verarbeitungsregeln und Datentypen von PHP auf negative Zahlen bei der Berechnung der Restoperation liegt. Entwickler müssen beim Schreiben von Code auf diese Regeln und die Datentypkonvertierung achten, um versehentliche und fehlerhafte Berechnungsergebnisse zu vermeiden.
Das obige ist der detaillierte Inhalt vonAnalyse der Gründe, warum 8%3 in PHP gleich 0 ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!