HOWTO · JavaScript
Modulo-Operator(%) in JavaScript
In diesem Tutorial erfahren Sie, wie Sie den Modulo-Operator(%) in JavaScript verwenden.
Auf dieser Seite
Der %-Operator in JavaScript gibt den Rest einer Division zurück. Bei positiven Werten entspricht das oft dem, was als Modulo bezeichnet wird. Bei negativen Dividenden wird der Unterschied sichtbar: Der Rest von JavaScript hat dasselbe Vorzeichen wie der Dividend. Dieser Leitfaden erklärt die Syntax, besondere numerische Fälle und gängige Anwendungsmuster.
Was der JavaScript-Operator % zurückgibt
Bei endlichen Zahlen gibt a % b den Rest zurück, nachdem der Quotient a / b in Richtung null abgeschnitten wurde. Bei 10 % 3 ist der Quotient 3 und der Rest 1. Das Ergebnis hat dasselbe Vorzeichen wie der Dividend (a), daher ist -10 % 3 gleich -1. Deshalb ist % in JavaScript ein Restoperator und liefert nicht immer das nichtnegative Ergebnis des mathematischen Modulo.
Syntax und einfache Beispiele
Schreibe zuerst den Dividenden, dann % und anschließend den Divisor: dividend % divisor. Der Operator akzeptiert numerische Operanden, auch Brüche. In diesem Ausdruck wird der Wert links durch den Wert rechts geteilt. Das Ergebnis ist eine Zahl, die dein Code speichern, vergleichen oder für eine weitere Berechnung verwenden kann. Das Beispiel weist jedes Ergebnis einer benannten Konstante zu und gibt beide Werte in der Konsole aus:
const wholeRemainder = 10 % 3;
const fractionalRemainder = 5.5 % 2;
console.log(wholeRemainder);
console.log(fractionalRemainder);
Das erste Ergebnis ist 1; das zweite ist 1.5, denn 2 passt zweimal in 5.5, wobei 1.5 übrig bleibt. Der bereitgestellte Laufzeitlauf bestätigt diese beiden Ausgaben: 1 und 1.5.
Negative Zahlen und Sonderfälle
Der Rest hat dasselbe Vorzeichen wie der Dividend: 10 % 3 ist 1, -10 % 3 ist -1 und 10 % -3 ist 1. Bei einem negativen ganzzahligen Vielfachen kann ein negatives Nullergebnis entstehen, wie bei -4 % 2. Wenn das Vorzeichen der Null wichtig ist, kannst du es mit Object.is(-4 % 2, -0) prüfen.
JavaScript gibt NaN zurück, wenn einer der Operanden NaN ist, wenn der Dividend unendlich ist oder wenn der Divisor 0 oder -0 ist. Ist der Dividend endlich und der Divisor unendlich, wird der Dividend unverändert zurückgegeben; daher ist 5 % Infinity gleich 5. Diese Ergebnisse folgen der numerischen Restsemantik von JavaScript. Sie wurden nicht in einem mit diesem Paket bereitgestellten Lauf beobachtet.
Häufige Anwendungen des %-Operators
Bei ganzzahligen Eingaben lässt sich die Parität so prüfen: n % 2 === 0 für gerade Zahlen und n % 2 !== 0 für ungerade. Das funktioniert auch mit negativen Ganzzahlen, denn ihre Reste sind 0 oder -1. Falls die Eingabe ein Bruch oder eine numerische Zeichenfolge sein könnte, solltest du sie vor einer ganzzahligen Paritätsprüfung validieren oder normalisieren.
Bei einer endlichen Zahl ergibt value % 1 den vorzeichenbehafteten gebrochenen Rest. Zum Beispiel ist 5.5 % 1 gleich 0.5, während -5.5 % 1 gleich -0.5 ist. Wenn du für negative Werte einen positiven Nachkommaanteil brauchst, lege eine ausdrückliche Normalisierungsregel fest, statt anzunehmen, dass % 1 nichtnegativ ist.
Bei einer nichtnegativen ganzen Minutenzahl teilen hours = Math.floor(minutes / 60) und remainingMinutes = minutes % 60 den Wert in Stunden und Minuten auf. So werden zum Beispiel aus 135 Minuten 2 Stunden und 15 Minuten.
Um bei jedem dritten Schleifendurchlauf eine Aktion auszuführen, prüfe i % 3 === 0. Um zwischen zwei Einträgen eines Arrays zu wechseln, verwende (round - 1) % players.length, wenn round bei 1 beginnt. Durch die Subtraktion von eins wird für den ersten Zug der Index 0 verwendet. Diese Muster setzen ein positives Intervall beziehungsweise ein nichtleeres Array voraus.
Rest und mathematisches Modulo
Das mathematische Modulo liefert üblicherweise einen Wert von 0 bis kleiner als ein positives Modulo. JavaScript % behält dagegen das Vorzeichen des Dividenden bei, daher ist -10 % 3 gleich -1. Für ein endliches a und ein endliches positives Modulo n normalisiert der Ausdruck ((a % n) + n) % n das Ergebnis auf einen nichtnegativen Wert im Modulo-Stil. Zum Beispiel ergibt sich für -10 mit Modulo 3 der Wert 2. Die Annahme eines positiven Modulos muss ausdrücklich gelten; dieses Muster ist kein allgemeiner Ersatz für % mit beliebigen Divisoren.