Rest (%)
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 Rest (%
)-Operator gibt den Rest zurück, der übrig bleibt, wenn ein Operand durch einen zweiten Operanden dividiert wird. Er übernimmt stets das Vorzeichen des Dividenden.
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
x % y
Beschreibung
Der %
-Operator ist für zwei Typen von Operanden überladen: Zahl und BigInt. Er erzwingt zunächst, dass beide Operanden in numerische Werte umgewandelt werden und prüft dann deren Typen. Wenn beide Operanden zu BigInts werden, führt er eine BigInt-Restoperation durch; andernfalls wird eine Zahl-Restoperation ausgeführt. Ein TypeError
wird ausgelöst, wenn ein Operand ein BigInt wird, der andere jedoch eine Zahl.
Bei der Operation n % d
wird n
als Dividend 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 ist oder wenn n
±0 ist, wird der Dividend n
zurückgegeben.
Wenn beide Operanden nicht null und endlich sind, wird der Rest r
berechnet als r := n - d * q
, wobei q
die ganze Zahl ist, sodass r
dasselbe Vorzeichen wie der Dividend n
hat und so nah wie möglich an 0 liegt.
Beachten Sie, dass in den meisten Sprachen %
ein Rest-Operator ist, in einigen (z. B. Python, Perl) jedoch ein Modulo-Operator. Modulo wird definiert als k := n - d * q
, wobei q
die ganze Zahl ist, sodass k
dasselbe Vorzeichen wie der Divisor d
hat und so nah wie möglich an 0 liegt. Für zwei gleichartige Vorzeichen sind beide gleichwertig, aber wenn die Operanden unterschiedliche Vorzeichen haben, hat das Modulo-Ergebnis immer dasselbe Vorzeichen wie der Divisor, während der Rest dasselbe Vorzeichen wie der Dividend hat, was dazu führen kann, dass sie sich um eine Einheit von d
unterscheiden. Um ein Modulo in JavaScript zu erhalten, verwenden Sie anstelle von n % d
die Operation ((n % d) + d) % d
. In JavaScript wird die Modulo-Operation (die keinen dedizierten Operator hat) verwendet, um den zweiten Operanden von Bit-Shift-Operatoren (<<
, >>
etc.) zu normalisieren, sodass der Offset stets einen positiven Wert hat.
Bei der BigInt-Division wird ein RangeError
ausgelöst, wenn der Divisor y
0n
ist. Der Rest einer Zahl durch Null liefert NaN
, aber BigInt kennt kein Konzept von NaN
.
Beispiele
Rest mit positivem Dividend
13 % 5; // 3
1 % -2; // 1
1 % 2; // 1
2 % 3; // 2
5.5 % 2; // 1.5
3n % 2n; // 1n
Rest mit negativem Dividend
-13 % 5; // -3
-1 % 2; // -1
-4 % 2; // -0
-3n % 2n; // -1n
Rest mit NaN
NaN % 2; // NaN
Rest mit Infinity
Infinity % 2; // NaN
Infinity % 0; // NaN
Infinity % Infinity; // NaN
2 % Infinity; // 2
0 % Infinity; // 0
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-multiplicative-operators |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Remainder ( % ) |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support