HOWTO · JavaScript

Modulo-Operator(%) in JavaScript

In diesem Tutorial erfahren Sie, wie Sie den Modulo-Operator(%) in JavaScript verwenden.

Auf dieser Seite

In diesem Tutorial erfahren Sie, wie Sie den Modulo-Operator % in JavaScript verwenden.

Restoperator % in JavaScript

Es gibt den Rest übrig, wenn eine Zahl (Dividende) durch eine andere Zahl (divisor) geteilt wird. Dieser Operator ist in anderen Sprachen nicht mit dem Operator modulo identisch, da er einem anderen Zweck dient. Ihre Ergebnisse sind nur für eine positive Dividende gleich, aber wenn wir eine negative Dividende a haben und ein Modulo-Operator darauf angewendet wird, sind die Ergebnisse völlig unterschiedlich. Das Ergebnis, das durch den Ausdruck ( (a % n) + n) % n unter Verwendung des Restoperators in JavaScript erhalten wird, ist das gleiche wie das Ergebnis, das unter Verwendung des Modulooperators in a % n erhalten wird.

Beispiel für die Verwendung des Restoperators % in JavaScript

Modulo mit positiver Dividende

1 % -2   //  1
2 % 3    //  2
5.5 % 2  // 1.5
12 % 5   //  2
1 % 2    //  1

Rest mit negativer Dividende

-12 % 5      // -2
    - 1 % 2  // -1
    - 4 % 2  // -0

Rest mit NaN

NaN % 2  // NaN

Rest mit Unendlichkeit

Infinity % 2         // NaN
Infinity % 0         // NaN
Infinity % Infinity  // NaN

Anwendungen

Ist eine Zahl ungerade oder gerade?

Wir können überprüfen, ob eine Ganzzahl gerade ist, indem wir prüfen, ob sie durch 2 teilbar ist. Wir können den Rückgabewert des Modulo-Operators verwenden. Wenn es 0 ist, bedeutet dies, dass die Zahl gerade ist.

function isEven(n) {
  return n % 2 === 0;
}

isEven(6);  // true
isEven(3);  // false

der Bruchteil einer Zahl

Wir können dies einfach tun, indem wir n % 1 berechnen.

function getFractionalPart(n) {
  return n % 1;
}

getFractionalPart(2.5);  // 0.5

Konvertieren von Minuten in Stunden

Wenn wir eine Zahl n erhalten, die die Anzahl der Minuten darstellt und die wir in Stunden und Minuten umwandeln möchten, können wir den Modulo-Operator verwenden.

const minutesToHoursAndMinutes = n =>
    ({hours: Math.floor(n / 60), minutes: n % 60});

minutesToHoursAndMinutes(123);  // { hours: 2, minutes: 3 }