Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
剰余演算子 (%) は、1 つ目のオペランドが 2 つ目のオペランドで除算されたときの余りである剰余を返します。これは常に被除数の符号を取ります。
% 演算子のオペランドは、数値型と長整数型の 2 つの型ででオーバーロードされています。 これは、まず両方のオペランドを数値に変換し、それらの型を調べます。両方のオペランドが長整数型になった場合は長整数型の剰余を実行し、そうでない場合は数値型の剰余を実行します。一方のオペランドが長整数型になり、他方が数値型になった場合は TypeError が発生します。
n % d の演算では、n を被除数、d を除数と呼びます。この演算処理は、オペランドのいずれかが NaN であるか、 n が ±無限大であるか、または d が ±0 である場合に NaN を返します。
両方のオペランドが 0 ではなく有限であるとき、剰余 r は r := n - d * q として計算されます。ここで q は、 r ができるだけ 0 に近く、被除数 n と同じ符号を持つ整数です。
なお、多くの言語では '%' はリマインダー演算子ですが、言語によっては(例えば Python や Perl では)モジュロ演算子になります。モジュロは k := n - d * q と定義されます。ここで q は k が除数 d と同じ符号を持ち、かつ使用可能な限り 0 に近い整数です。 2 つのオペランドの符号が同じであれば、両者は等価になりますが、オペランドの符号が異なる場合、オペランドの符号が異なる場合、モジュロの結果は符号が常に 除数 と同じになり、リマインダーは被除数と同じになります。 JavaScript でモジュロを得るには、 n % d の代わりに ((n % d) + d) % d を使用してください。 JavaScript では、ビット単位のシフト演算子(<<、>> など)の 2 つ目のオペランドを正規化するために、(専用の演算子のない)モジュロ演算が使用され、オフセットが常に正の値になります。
長整数型の除算では、被除数 y が 0n の場合に RangeError が発生します。これはゼロによる剰余は NaN を返しますが、長整数には NaN の概念がないからです。
| ECMAScript® 2027 Language Specification # sec-multiplicative-operators |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年7月10日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.