Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 式と演算子
  5. 剰余 (%)

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

剰余 (%)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

剰余演算子 (%) は、1 つ目のオペランドが 2 つ目のオペランドで除算されたときの余りである剰余を返します。これは常に被除数の符号を取ります。

試してみましょう

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

構文

js
x % y

解説

% 演算子のオペランドは、数値型と長整数型の 2 つの型ででオーバーロードされています。 これは、まず両方のオペランドを数値に変換し、それらの型を調べます。両方のオペランドが長整数型になった場合は長整数型の剰余を実行し、そうでない場合は数値型の剰余を実行します。一方のオペランドが長整数型になり、他方が数値型になった場合はTypeError が発生します。

n % d の演算では、n を被除数、d を除数と呼びます。この演算処理は、オペランドのいずれかがNaN であるか、n が ±無限大であるか、またはd が ±0 である場合にNaN を返します。

両方のオペランドが 0 ではなく有限であるとき、剰余rr := n - d * q として計算されます。ここでq は、r ができるだけ 0 に近く、被除数n と同じ符号を持つ整数です。

なお、多くの言語では '%' はリマインダー演算子ですが、言語によっては(例えばPython や Perl では)モジュロ演算子になります。モジュロはk := n - d * q と定義されます。ここでqk が除数d と同じ符号を持ち、かつ使用可能な限り 0 に近い整数です。 2 つのオペランドの符号が同じであれば、両者は等価になりますが、オペランドの符号が異なる場合、オペランドの符号が異なる場合、モジュロの結果は符号が常に除数 と同じになり、リマインダーは被除数と同じになります。 JavaScript でモジュロを得るには、n % d の代わりに((n % d) + d) % d を使用してください。 JavaScript では、ビット単位のシフト演算子(<<>> など)の 2 つ目のオペランドを正規化するために、(専用の演算子のない)モジュロ演算が使用され、オフセットが常に正の値になります。

長整数型の除算では、被除数y0n の場合にRangeError が発生します。これはゼロによる剰余はNaN を返しますが、長整数にはNaN の概念がないからです。

正の値の剰余

js
13 % 5; // 31 % -2; // 11 % 2; // 12 % 3; // 25.5 % 2; // 1.53n % 2n; // 1n

負の値の剰余

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

NaN の剰余

js
NaN % 2; // NaN

無限大の剰余

js
Infinity % 2; // NaNInfinity % 0; // NaNInfinity % Infinity; // NaN2 % Infinity; // 20 % Infinity; // 0

仕様書

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

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp