【徹底解説】JavaScriptで数値が整数かどうかを判定する4つの方法
JavaScriptで数値が浮動小数点または整数かどうかを確認する方法
JavaScriptでは、様々な方法で数値が浮動小数点なのか整数なのかを確認できます。それぞれの特徴と使い分けを以下に説明します。
typeof 演算子
最も簡単な方法は、typeof
演算子を使用する方法です。
const num = 123.45;
console.log(typeof num); // 結果: "number"
この例では、num
は数値型であることが確認できます。しかし、typeof
演算子は数値型であることしか判断できず、浮動小数点なのか整数なのかはわかりません。
Number.isInteger()
メソッドは、数値が整数かどうかを判定します。
const num1 = 123;
const num2 = 123.45;
console.log(Number.isInteger(num1)); // 結果: true
console.log(Number.isInteger(num2)); // 結果: false
この例では、num1
は整数で num2
は浮動小数点であることが確認できます。
Number.isFinite()
メソッドは、数値が有限な値(有限数)かどうかを判定します。つまり、NaN
または Infinity
以外の数値であれば true
を返します。
const num1 = 123;
const num2 = Infinity;
const num3 = NaN;
console.log(Number.isFinite(num1)); // 結果: true
console.log(Number.isFinite(num2)); // 結果: false
console.log(Number.isFinite(num3)); // 結果: false
その他の方法
上記以外にも、以下のような方法で数値が浮動小数点なのか整数なのかを確認できます。
- ビット演算子を使う: 数値をビット演算子
~
で2回ビット否定することで、元の値と比較して整数かどうかを判定できます。 - 正規表現を使う: 浮動小数点数の形式を表す正規表現を使用して、数値がその形式に一致するかどうかを判断できます。
JavaScriptで数値が浮動小数点なのか整数なのかを確認するには、状況に応じて適切な方法を選択する必要があります。
- 数値型であることを確認したいだけの場合:
typeof
演算子 - 整数かどうかを確実に確認したい場合:
Number.isInteger()
メソッド - より高度な判定が必要な場合: ビット演算子や正規表現
それぞれの方法の特徴と使い分けを理解することで、より効率的に数値の種類を判定することができます。
以下のサンプルコードは、Number.isInteger()
, Number.isFinite()
, 正規表現を使って、数値が浮動小数点なのか整数なのかを確認する方法を示しています。
Number.isInteger() メソッド
function checkInteger(num) {
if (Number.isInteger(num)) {
console.log(`${num}は整数です。`);
} else {
console.log(`${num}は整数ではありません。`);
}
}
checkInteger(123); // 結果: 123は整数です。
checkInteger(123.45); // 結果: 123.45は整数ではありません。
Number.isFinite() メソッド
function checkFinite(num) {
if (Number.isFinite(num)) {
console.log(`${num}は有限な値です。`);
} else {
console.log(`${num}は有限な値ではありません。`);
}
}
checkFinite(123); // 結果: 123は有限な値です。
checkFinite(Infinity); // 結果: Infinityは有限な値ではありません。
checkFinite(NaN); // 結果: NaNは有限な値ではありません。
正規表現
function checkFloat(num) {
const regex = /^-?\d+\.?\d*$/;
if (regex.test(num)) {
console.log(`${num}は浮動小数点です。`);
} else {
console.log(`${num}は浮動小数点ではありません。`);
}
}
checkFloat(123); // 結果: 123は浮動小数点ではありません。
checkFloat(123.45); // 結果: 123.45は浮動小数点です。
checkFloat('abc'); // 結果: abcは浮動小数点ではありません。
これらのサンプルコードはあくまでも一例です。状況に応じて、適切な方法を選択して使用してください。
JavaScriptで数値が浮動小数点または整数かどうかを確認するその他の方法
前述の方法に加え、JavaScriptで数値の種類を確認する方法はいくつかあります。以下に、いくつかの例を紹介します。
ビット演算子を使う
function isInteger(num) {
return num === ~~num;
}
console.log(isInteger(123)); // 結果: true
console.log(isInteger(123.45)); // 結果: false
この方法は、比較的シンプルで高速な方法です。しかし、NaN
や Infinity
などの特殊な値は正しく判定できません。
Math.floor()
関数は、小数点以下の部分を切り捨てて整数部分のみを返します。元の数値が整数であれば、Math.floor()
関数で返される値と元の数値が一致することになります。
function isInteger(num) {
return num === Math.floor(num);
}
console.log(isInteger(123)); // 結果: true
console.log(isInteger(123.45)); // 結果: false
この方法は、ビット演算子を使う方法よりも若干処理速度が遅くなりますが、NaN
や Infinity
などの特殊な値も正しく判定できます。
文字列に変換して比較する
数値を文字列に変換し、その文字列が整数かどうかを判定する方法もあります。
function isInteger(num) {
return /^\d+$/.test(String(num));
}
console.log(isInteger(123)); // 結果: true
console.log(isInteger(123.45)); // 結果: false
console.log(isInteger('abc')); // 結果: false
この方法は、正規表現を使用するため、処理速度が遅くなります。また、小数点以下の桁数が非常に多い数値の場合、誤判定が発生する可能性があります。
- 高速かつシンプルな判定が必要な場合: ビット演算子を使う
NaN
やInfinity
などの特殊な値も正しく判定したい場合:Math.floor()
関数を使う- 正規表現を用いた柔軟な判定が必要な場合: 文字列に変換して比較する
javascript types numbers