概要: このチュートリアルでは、JavaScript剰余演算子(%
)を使用して、ある数値を別の数値で除算した剰余を取得する方法を学習します。
JavaScript剰余演算子の紹介
JavaScriptでは、%
を使用して剰余演算子を表現します。剰余演算子は、ある値を別の値で除算した際に残る剰余を返します。
剰余演算子の構文は以下のとおりです。
dividend % divisor
剰余の計算式は以下のとおりです。
dividend = divisor * quotient + remainder
where |remainder| < |divisor|
この式では、被除数
、除数
、商
、剰余
はすべて整数です。剰余
の符号は被除数
の符号と同じです。
剰余
の符号は被除数
の符号と同じです。
JavaScript剰余演算子の例
JavaScript剰余演算子の使用方法の例を見てみましょう。
1) 正の被除数を使用した剰余演算子の例
次の例は、正の被除数で剰余演算子を使用する方法を示しています。
let remainder = 5 % -2;
console.log(remainder); // 1
remainder = 5 % 2;
console.log(remainder); // 1
Code language: JavaScript (javascript)
2) 負の被除数を使用した剰余演算子の例
次の例は、負の被除数で剰余演算子を使用する方法を示しています。
let remainder = -5 % 3;
console.log(remainder); // -2
remainder = -5 % -3;
console.log(remainder); // -2
Code language: JavaScript (javascript)
3) 剰余演算子の特殊値の使用
被除数がInfinity
で、除数が有限数の場合、剰余はNaN
になります。例:
let remainder = Infinity % 2;
console.log(remainder); // NaN
Code language: JavaScript (javascript)
被除数が有限数で、除数が0の場合、剰余はNaN
になります。
let remainder = 10 % 0;
console.log(remainder); // NaN
Code language: JavaScript (javascript)
被除数と除数の両方がInfinity
の場合、剰余はNaN
になります。
let remainder = Infinity % Infinity;
console.log(remainder); // NaN
Code language: JavaScript (javascript)
被除数が有限数で、除数がInfinity
の場合、剰余は被除数になります。例:
let remainder = 10 % Infinity;
console.log(remainder); // 10
Code language: JavaScript (javascript)
被除数が0で、除数が0以外の場合、剰余は0になります。
let remainder = 0 % 10;
console.log(remainder); // 0
Code language: JavaScript (javascript)
被除数または除数のいずれかが数値でない場合、Number()
関数を使用して数値に変換され、上記の規則が適用されます。例:
let remainder = '10' % 3;
console.log(remainder); // 1
Code language: JavaScript (javascript)
剰余演算子を使用して数値が奇数かどうかを確認する
数値が奇数かどうかを確認するには、次の例のように剰余演算子(%
)を使用します。
let num = 13;
let isOdd = num % 2;
Code language: JavaScript (javascript)
この例では、num
が奇数の場合は剰余が1になり、num
が偶数の場合は剰余が0になります。
後で、数値が奇数の場合はtrue
、そうでない場合はfalse
を返す関数の定義方法を学習します。
function isOdd(num) {
return num % 2;
}
Code language: JavaScript (javascript)
または、ES6のアロー関数を使用します。
const isOdd = (num) => num % 2;
Code language: JavaScript (javascript)
剰余演算子とモジュロ演算子
JavaScriptでは、剰余演算子(%)はモジュロ演算子ではありません。
Pythonを使用してきた場合、%
はこの言語ではモジュロ演算子を意味すると感じるかもしれません。しかし、JavaScriptではそうではありません。
JavaScriptでモジュロ演算子を取得するには、次の式を使用します。
((dividend % divisor) + divisor) % divisor
または、関数でラップします。
const mod = (dividend, divisor) => ((dividend % divisor) + divisor) % divisor;
Code language: JavaScript (javascript)
被除数と除数の符号が同じ場合、剰余演算子とモジュロ演算子は同じ結果を返します。そうでない場合、異なる結果を返します。
例:
const mod = (dividend, divisor) => ((dividend % divisor) + divisor) % divisor;
// dividen and divisor have the same sign
console.log('remainder:', 5 % 3); // 2
console.log('modulo:', mod(5, 3)); // 2
// dividen and divisor have the different signs
console.log('remainder:', -5 % 3); // -2
console.log('modulo:', mod(-5, 3)); // 1
Code language: JavaScript (javascript)
出力
remainder: 2
modulo: 2
remainder: -2
modulo: 1
Code language: HTTP (http)
まとめ
- JavaScript剰余演算子(
%
)を使用して、ある値を別の値で除算した剰余を取得します。