Unerwartete negative Ergebnisse im Modulo-Operator von JavaScript
Bei Verwendung des Modulo-Operators (%) in JavaScript für negative Zahlen kann es zu überraschenden Ergebnissen kommen . Beispielsweise entspricht (-13) % 64 in Google Calculator 51, während es in JavaScript -13 zurückgibt.
Das Problem verstehen
Der Modulo-Operator von JavaScript berechnet den Rest nach der Division, wendet aber nicht die gleiche Logik auf negative Zahlen an wie mathematische Operationen wie Google Calculator. In JavaScript gibt der Modulo-Operator einen Wert mit demselben Vorzeichen wie der erste Operand zurück.
Behebung des Problems
Um dieses Verhalten zu korrigieren und die Konsistenz mit mathematischen Operationen sicherzustellen, Sie können die folgende benutzerdefinierte Implementierung des Modulo verwenden Operator:
Number.prototype.mod = function (n) { "use strict"; return ((this % n) + n) % n; };
Verwendung
Sobald die benutzerdefinierte Modulo-Methode definiert ist, können Sie sie verwenden, um den Rest negativer Zahlen zu berechnen:
console.log((-13).mod(64)); // Outputs 51
Dieses korrigierte Verhalten stimmt mit dem erwarteten mathematischen Ergebnis überein und gewährleistet ein konsistentes Verhalten auf verschiedenen Plattformen.
Das obige ist der detaillierte Inhalt vonWarum erzeugt der Modulo-Operator von JavaScript unerwartete Ergebnisse mit negativen Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!