JavaScriptで整数をチェックする5つの方法
JavaScriptにおける小数点の有無のチェック
JavaScriptでは、数値が小数点を持つかどうか(つまり、整数かどうか)を判定する方法はいくつかあります。
モジュロ演算子(%)を用いる
- コード
- 原理
整数で除算したときの余りが0であれば、その数は整数です。
function isInteger(num) {
return num % 1 === 0;
}
正規表現を用いる
- 原理
正規表現パターンで数値の形式をマッチングさせます。
function isInteger(num) {
return /^\d+$/.test(num);
}
parseInt()関数と比較する
- 原理
parseInt()
関数は数値を整数に変換します。元の数値と比較して同じであれば、整数です。
function isInteger(num) {
return parseInt(num) === num;
}
Number.isInteger()関数を利用する
- 原理
JavaScriptの組み込み関数であるNumber.isInteger()
は、直接数値が整数かどうかを判定します。
function isInteger(num) {
return Number.isInteger(num);
}
これらの方法を適切に選択して、プログラムの要件に基づいて小数点の有無を判定してください。
- パフォーマンス
性能面では、Number.isInteger()
が通常最も効率的です。 - バリデーション
これらの方法は、入力値のバリデーションやデータ処理の際に役立ちます。 - 数値の型
JavaScriptでは、数値型は自動的に整数または浮動小数点型に型変換されます。
例
const number1 = 10;
const number2 = 3.14;
console.log(isInteger(number1)); // true
console.log(isInteger(number2)); // false
JavaScriptで整数をチェックする5つの方法のコード解説
function isInteger(num) {
return num % 1 === 0;
}
- 例
isInteger(5)
はtrue
を返します。
- 解説
num % 1
は、num
を 1 で割った余りを求めます。- 整数はどんな数で割っても余りが 0 になるため、
num % 1
が 0 ならnum
は整数です。
function isInteger(num) {
return /^\d+$/.test(num);
}
- 解説
^\d+$
は、数字のみで構成される文字列にマッチする正規表現です。test()
メソッドは、引数の文字列が正規表現にマッチするかを判定します。- 数値を文字列に変換し、この正規表現にマッチすれば、その数値は整数です。
function isInteger(num) {
return parseInt(num) === num;
}
- 解説
parseInt()
は、文字列を整数に変換する関数です。- 数値を
parseInt()
で変換しても元の数値と変わらない場合、その数値は整数です。
function isInteger(num) {
return Number.isInteger(num);
}
- 解説
Number.isInteger()
は、数値が整数かどうかを判定する組み込み関数です。- 整数であれば
true
、そうでなければfalse
を返します。
JavaScriptで整数をチェックする方法は他にも多数存在します。
- ...
- 16進整数リテラルを利用する
0x
で始まる16進数リテラルは整数のみを表す - toFixed() を使う
num === Number(num.toFixed())
どの方法を選ぶかは、
- 特定のケース
正規表現やparseInt()
が必要なケースも - 可読性
読みやすいコードにするにはNumber.isInteger()
がシンプル - パフォーマンス
Number.isInteger()
が一般的に高速
などの要素を考慮して、適切な方法を選択してください。
JavaScriptで整数をチェックする方法は複数あります。それぞれの方法に特徴があり、状況に応じて使い分けることが重要です。
重要なポイント
- Number.isInteger()
組み込み関数で判定 - parseInt()
整数に変換して比較 - 正規表現
文字列パターンで判定 - モジュロ演算子
余りで判定
toFixed() メソッドを利用する
function isInteger(num) {
return num === Number(num.toFixed());
}
- 解説
toFixed()
メソッドは、数値を指定された桁数で丸めて文字列に変換します。- 整数を丸めても値が変わらないため、元の数値と
toFixed()
で変換した数値が一致すれば、その数は整数です。
16進整数リテラルを利用する
function isInteger(num) {
return Number.isInteger(parseInt(num, 16));
}
- 解説
- 16進数リテラルは
0x
で始まり、数値を16進数で表現します。 parseInt(num, 16)
で16進数から10進数に変換し、Number.isInteger()
で整数かどうかを判定します。- 16進数リテラルは整数のみを表すため、この方法で整数かどうかを判定できます。
- 16進数リテラルは
ビット演算子を利用する
function isInteger(num) {
return (num | 0) === num;
}
- 解説
- ビット演算子
|
は、ビットごとのOR演算を行います。 - 整数を0とOR演算しても値は変わらないため、元の数値とビット演算の結果が一致すれば、その数は整数です。
- ビット演算子
Object.is() メソッドを利用する
function isInteger(num) {
return Object.is(parseInt(num), num);
}
- 解説
Object.is()
メソッドは、2つの値が厳密に等しいかどうかを判定します。parseInt()
で変換した数値と元の数値が厳密に等しければ、その数は整数です。
どの方法を選ぶべきか?
- 特定のケース
toFixed()
は、小数点以下の桁数を制御したい場合に便利です。- 16進数リテラルは、16進数で扱っている場合に便利です。
- ビット演算子は、ビット操作に慣れている場合に便利です。
Object.is()
は、NaNとの比較など、より厳密な比較が必要な場合に便利です。
- 可読性
Number.isInteger()
が最もシンプルで読みやすいです。
JavaScriptで整数をチェックする方法は、上記以外にも様々な方法があります。どの方法を選ぶかは、パフォーマンス、可読性、特定のケース などを考慮して、ご自身のコードに合った方法を選択してください。
Number.isInteger()
が一般的に推奨される- 状況に応じて使い分ける
- 各方法に特徴がある
- 複数の方法が存在する
javascript validation numbers