Der Modulo-Operator – Programmieren lernen mit JavaScript – Thytos
Nächstes Video startet in 3 Sekunden.
Programmieren lernen mit JavaScript

Der Modulo-Operator

Der Modulo-Opera­tor hilft beim Prü­fen, ob eine Zahl einen be­stimm­ten Tei­ler hat. Ob eine Zahl gerade oder un­gerade ist, lässt sich damit simpel fest­stel­len.

Um zu schauen, ob eine Zahl durch eine andere teilbar ist, sollte der Modulo-Operator zu Hilfe genommen werden. Der ist in JavaScript ein Prozentzeichen und wird zwischen Dividend und Divisor geschrieben. Wenn geprüft werden soll, ob eine Zahl gerade oder ungerade ist, wird Modulo zwei gerechnet.

1 % 2
// => 1

2 % 2
// => 0

3 % 2
// => 1

10 % 2
// => 0

15837241 % 2
// => 1

Ist das Ergebnis 0 bedeutet das, dass die Zahl durch den gewählten Divisor teilbar ist.

Was tut Modulo?

Offensichtlich steht Modulo in Zusammenhang mit Division, aber gleichzeitig hat das Ergebnis nichts mit dem Quotientenwert zu tun.

9 / 2
// => 4.5

9 % 2
// => 1
// Wo ist hier der Zusammenhang zur Division?

Modulo bezieht sich auf die Division mit Rest und gibt dabei den Restbetrag an.

Wird bspw. 10 durch 4 gerechnet, ist das Ergebnis 2 mit Rest 2, denn 2 mal 4 ist 8 und von 8 bis 10 ist die Differenz 2. Modulo ist diese Differenz / dieser Rest der Division

Der Modulo-Operator gehört zu den mathematischen Operatoren in JavaScript und vervollständigt damit die Liste dieser Operatoren.

Operator Bedeutung
+ Addition
- Subtraktion
* Multiplikation
/ Division
% Modulo

Beispielfall: Gerade oder ungerade Zahl

Im letzten Artikel der Serie ging es unter anderem darum, einen unterschiedlichen Text auszugeben, je nachdem ob eine gesetzte Zahl gerade oder ungerade ist. Die gefundene Lösung funktioniert zwar, ist allerdings komplexer als eine Lösung mit Modulo.

var nr = 42; // Beliebiger Wert als Eingabe

Die Unterscheidung wird mit einer if…else-Kontrollstruktur gelöst. Für die Bedingung darin kann nun Modulo eingesetzt werden.

if (nr % 2 === 1) {
  alert("Die Zahl " + nr + " ist ungerade");
} else {
  alert("Die Zahl " + nr + " ist gerade");
}

Öffnet eure Konsole und probiert den Code aus.

Es ist auch möglich den ===-Vergleichsoperator wegzulassen.

if (nr % 2) { …

Obwohl das Ergebnis nicht true oder false und somit kein boolscher Wert ist, funktioniert das, weil die Zahl 0 falsy und 1 truthy ist.