Warum ist 8%-3 in PHP gleich 0?
In PHP hoffen wir bei einigen einfachen mathematischen Operationen immer, die richtigen Ergebnisse zu erhalten. Manchmal verwirren uns jedoch die Ergebnisse einiger einfacher Operationen. Genau wie in PHP ist das Ergebnis der Berechnung von 8%-3 0. Warum passiert das?
Um dieses Problem zu verstehen, müssen Sie zunächst die Definition der Modulo-Operation verstehen. In der Mathematik besteht die Modulo-Operation darin, den Rest zu ermitteln, der üblicherweise als „a mod n“ ausgedrückt wird, wobei a der Dividend und n der Divisor ist. Das Ergebnis der Modulo-Operation ist eine nicht negative ganze Zahl im Bereich von 0 bis n-1. Das Ergebnis von 9 mod 4 ist beispielsweise 1, weil 9 dividiert durch 4 gleich 2 Rest 1 ist.
In PHP wird die Modulo-Operation durch das %-Symbol dargestellt. Laut PHP-Handbuch ist das Vorzeichen des Ergebnisses der Modulo-Operation dasselbe wie der Dividend. Das heißt, wenn die Dividende positiv ist, ist das Ergebnis auch positiv; wenn die Dividende negativ ist, ist das Ergebnis ebenfalls negativ.
Zurück zu unserer Frage: 8 geteilt durch 3 ergibt 2 Rest 2. Gemäß der Definition der Modulo-Operation sollte das Ergebnis 2 sein. Aber in PHP ist das Ergebnis von 8%-3 0. Verstößt dies gegen die Definition der Modulo-Operation?
Eigentlich tritt dieses Phänomen nicht nur bei PHP auf, sondern ist eine Möglichkeit, Modulo-Operationen zu definieren. In einigen Programmiersprachen kann das Ergebnis der Modulo-Operation negativ sein. Die spezifische Definition variiert je nach Spezifikation der Programmiersprache. In PHP wird die „Rundung gegen Null“-Regel der Modulo-Arithmetik verwendet.
Laut PHP-Handbuch ist das Ergebnis der Modulo-Operation gleich dem Rest des Dividenden, wenn der Dividend eine negative Zahl ist, und wenn der Dividend eine negative Zahl ist, ist das Ergebnis der Modulo-Operation gleich zur Dividende geteilt durch das gerundete Ergebnis des Divisors und 0 Der Rest des größeren. Mit anderen Worten, das Ergebnis der Modulo-Operation von PHP ist immer kleiner als der Absolutwert der Dividende, aber das Vorzeichen ist das gleiche wie das der Dividende.
Also zurück zum Beispiel von 8%-3. 8 ist eine positive Zahl und -3 ist eine negative Zahl. Gemäß der Regel „Rundung gegen Null“ sollte das Ergebnis der Modulo-Operation der Rest der größeren Zahl von 8 dividiert durch -3 und 0 sein. Das Ergebnis der Division von 8 durch -3 und des Rundens ist -3, und der größere Wert im Vergleich zu 0 ist immer noch 0.
Daher ist das Ergebnis von 8%-3 gleich 0.
Diese Art der Definition kann in manchen Szenarien die Logik des Codes vereinfachen, kann aber auch leicht missverstanden werden. Wenn wir den Rest einer positiven Zahl erhalten möchten, können wir die von PHP bereitgestellte Funktion fmod() verwenden, die den Rest der Division von Gleitkommazahlen zurückgibt.
Zusammenfassend lässt sich sagen, dass 8%-3 gleich 0 in PHP durch die Art und Weise bestimmt wird, wie die Modulo-Operation definiert ist, d. h. durch die Regel „Rundung gegen Null“. Um dieses Phänomen zu verstehen, müssen wir die Spezifikationen der Modulo-Operation der von uns verwendeten Programmiersprache verstehen und die geeignete Operationsmethode entsprechend der tatsächlichen Situation auswählen.
Das obige ist der detaillierte Inhalt vonWarum ist 8%-3 in PHP gleich 0?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!