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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-26 02:22:12811Durchsuche

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

Verhalten des Modulus-Operators in JavaScript für negative Zahlen

In JavaScript berechnet der Modulus-Operator (%) den Rest der Divisionsoperation. Bei negativen Dividendenwerten verhält es sich jedoch anders als bei mathematischen Konventionen und anderen Programmiersprachen.

Beim Durchführen einer Moduloperation für einen negativen Dividenden gibt JavaScript einen negativen Rest zurück, während mathematische Berechnungen und die meisten anderen Programmiersprachen einen positiven Rest ergeben eins. Dies kann anhand des folgenden Beispiels demonstriert werden:

  • Google-Rechner: (-13) % 64 = 51 (erwartetes Ergebnis)
  • JavaScript: console.log(-13 % 64) = -13 (falsches Ergebnis)

Behebung des Problem

Um das korrekte Ergebnis für Moduloperationen mit negativen Zahlen in JavaScript zu erhalten, können wir die folgende benutzerdefinierte Funktion verwenden:

Number.prototype.mod = function (n) {
  "use strict";
  return ((this % n) + n) % n;
};

Diese Funktion, wenn sie auf negative Dividenden angewendet wird, stellt sicher, dass der zurückgegebene Rest positiv ist. Zum Beispiel:

console.log((-13).mod(64)); // Output: 51 (correct result)

Das obige ist der detaillierte Inhalt vonWarum erzeugt der Modulus-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