Heim >Web-Frontend >js-Tutorial >Warum erzeugt der Modulo-Operator von JavaScript unerwartete Ergebnisse mit negativen Zahlen?

Warum erzeugt der Modulo-Operator von JavaScript unerwartete Ergebnisse mit negativen Zahlen?

DDD
DDDOriginal
2024-11-20 00:52:021060Durchsuche

Why Does JavaScript's Modulo Operator Produce Unexpected Results with Negative Numbers?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn