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
Freigeben: 2024-11-26 02:22:12
Original
764 Leute haben es durchsucht

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;
};
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage