Restwert (%)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der Restwert (%)-Operator gibt den Rest zurück, der verbleibt, wenn ein Operand durch einen zweiten Operanden dividiert wird. Er nimmt immer das Vorzeichen des Dividenden an.

Probieren Sie es aus

console.log(13 % 5);
// Expected output: 3

console.log(-13 % 5);
// Expected output: -3

console.log(4 % 2);
// Expected output: 0

console.log(-4 % 2);
// Expected output: -0

Syntax

js
x % y

Beschreibung

Der %-Operator ist für zwei Typen von Operanden überladen: Zahl und BigInt. Er zwingt beide Operanden zunächst zu numerischen Werten und prüft die Typen dieser. Bei BigInt-Operanden wird der Restwert-Berechnung mit BigInt durchgeführt, andernfalls mit Zahlen. Ein TypeError wird ausgelöst, wenn ein Operand zu einem BigInt und der andere zu einer Zahl wird.

Für die Operation n % d wird n als Dividende und d als Divisor bezeichnet. Die Operation gibt NaN zurück, wenn einer der Operanden NaN ist, n ±Infinity ist oder wenn d ±0 ist. Andernfalls, wenn d ±Infinity oder wenn n ±0 ist, wird die Dividende n zurückgegeben.

Wenn beide Operanden ungleich null und endlich sind, wird der Rest r berechnet als r := n - d * q, wobei q die ganze Zahl ist, sodass r das gleiche Vorzeichen wie die Dividende n hat, während es so nah wie möglich bei 0 liegt.

Beachten Sie, dass in den meisten Sprachen '%' ein Restwert-Operator ist, in einigen (z.B. Python, Perl) aber ein Modulo-Operator. Modulo wird definiert als k := n - d * q, wobei q die ganze Zahl ist, sodass k das gleiche Vorzeichen wie der Divisor d hat, während es so nah wie möglich bei 0 liegt. Für zwei Werte mit demselben Vorzeichen sind die beiden gleichwertig; sind die Operanden jedoch unterschiedlichen Vorzeichens, hat das Moduloergebnis immer das gleiche Vorzeichen wie der Divisor, während der Rest den gleichen Vorzeichen wie die Dividende hat, was dazu führen kann, dass sie sich um eine Einheit von d unterscheiden. Um ein Modulo in JavaScript zu erhalten, anstelle von n % d, verwenden Sie ((n % d) + d) % d. In JavaScript wird die Modulo-Operation (die keinen eigenen Operator hat) verwendet, um den zweiten Operanden von bitweisen Schiebeoperatoren zu normalisieren (<<, >>, etc.), sodass der Versatz immer einen positiven Wert hat.

Bei BigInt-Divisionen wird ein RangeError ausgelöst, wenn der Divisor y 0n ist. Dies liegt daran, dass der Restwert einer Division durch Null NaN ergibt, jedoch hat BigInt kein NaN.

Beispiele

Restwert mit positiver Dividende

js
13 % 5; // 3
1 % -2; // 1
1 % 2; // 1
2 % 3; // 2
5.5 % 2; // 1.5

3n % 2n; // 1n

Restwert mit negativer Dividende

js
-13 % 5; // -3
-1 % 2; // -1
-4 % 2; // -0

-3n % 2n; // -1n

Restwert mit NaN

js
NaN % 2; // NaN

Restwert mit Unendlichkeit

js
Infinity % 2; // NaN
Infinity % 0; // NaN
Infinity % Infinity; // NaN
2 % Infinity; // 2
0 % Infinity; // 0

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-multiplicative-operators

Browser-Kompatibilität

Siehe auch