Javascript Modulo – % – Rest-Operator

Der Modulo- oder Rest-Operator % gibt den Rest einer ganzzahligen Division zurück – wenn ein Operand durch einen zweiten Operand geteilt wird. Wenn der erste Operand negativ ist, ist der Rückgabewert ebenfalls immer negativ, ist der erste Operand positiv, ist auch der Rückgabewert immer positiv.

Array Elemente in String / Zeichenkette umwandeln

Math.floor() / Math.trunc

Das Ergebnis der Division ist eine Gleitkommazahl, Math.floor() und Math.trunc() geben einen Integer zurück – z.B. 49 : 28 = 1.75 und Math.floor(1.75) = 1.

Die Math.floor sag also, wie oft der zweite Operand in den ersten Operand passt, der Modulo-Operator gibt den Rest zurück.

const x = 28;
const y = 49;

const quotient = Math.floor(y/x);   // 1
const rest = y % x;                 // 21

Anstelle von Math.floor kann Math.trunc(y/x) genutzt werden.

const num = 77 % 12; // gibt 5 zurück
const neg = -37 % 5; // gibt -2 zurück

Modulo Negativ, Positiv

Wenn der Dividend unendlich ist oder der Divisor 0 ist, ist das Ergebnis immer NaN.

Modulo Beispiele

Der Modulo-Operator kommt zum Einsatz, wenn getestet wird, ob eine Zahl gerade oder ungerade ist, ob ein Wert durch einen anderen Wert teilbar ist, beim zyklischen Inkrement / Dekrement (hoch- bzw. runterzählen) innerhalb eines Intervals.

So wird der %-Operator z.B. in einer Animation oder Simulation benutzt, wenn ein Winkel immer zwischen 0 und 360 Grad liegen muss.

Die Restwertfunktion rechnet Dezimalzahlen in Binär-, Hexadezimal- oder Oktalzahlen um (http://www.fachinformatikerwissen.de/pages/wis_grun_modu.shtml).

if (11 % 2 === 0) {
	console.log ("gerade")
} else {
	console.log ("ungerade")
}

Wiederkehrende Events behandeln

requestAnimationFrame ist eine JavaScript-Methode für das Steuern von Animationen, die aber – anders als setTimeout und setInterval – nicht direkt getaktet werden kann. Aber requestAnimationFrame bietet eine bessere Performance und Synchronisation mit dem Bildschirm-Rendering.

2023 01 10 12 30 45 600 +1:00 Jahr Monat Tag Stunde Minute Sekunde Milisekunden Zeitzonen-Offset
const interval = 5000; // Intervall in Millisekunden (2 Sekunden)

function repeatedEvent(currentTime) {
    // 16ms ist ungefähr die Zeit für einen Frame bei 60fps
    if (Math.floor(currentTime) % interval < 16) { 
        triggerEvent();
    }
    requestAnimationFrame(repeatedEvent);
}

function triggerEvent() {
    const jetzt = new Date();
	… Ausgabe …
}

requestAnimationFrame(repeatedEvent);

repeatedEvent verwendet Math.floor, um aktuelle Zeit auf ganze Sekunden zu reduzieren, und modulo, um auf 5 Sekunden zu takten.

Mit Modulo prüfen, ob eine Zahl eine Primzahl ist

Der Modulo-Operator wird häufig in Algorithmen zur Primzahlprüfung verwendet, um festzustellen, ob eine Zahl durch eine andere teilbar ist.

Modulo bei floats – Gleitkommazahlen

Anders als in den meisten Programmiersprachen funktioniert der %-Operator auch bei floating point numbers, also mit Gleitkommazahlen.

const rem = 7.5 % 2; // gibt 1.5 zurück
console.log (rem)
Suchen auf mediaevent.de