【徹底解説】JavaScriptで数値が整数かどうかを判定する4つの方法

2024-04-28

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

この方法は、比較的シンプルで高速な方法です。しかし、NaNInfinity などの特殊な値は正しく判定できません。

Math.floor() 関数は、小数点以下の部分を切り捨てて整数部分のみを返します。元の数値が整数であれば、Math.floor() 関数で返される値と元の数値が一致することになります。

function isInteger(num) {
  return num === Math.floor(num);
}

console.log(isInteger(123)); // 結果: true
console.log(isInteger(123.45)); // 結果: false

この方法は、ビット演算子を使う方法よりも若干処理速度が遅くなりますが、NaNInfinity などの特殊な値も正しく判定できます。

文字列に変換して比較する

数値を文字列に変換し、その文字列が整数かどうかを判定する方法もあります。

function isInteger(num) {
  return /^\d+$/.test(String(num));
}

console.log(isInteger(123)); // 結果: true
console.log(isInteger(123.45)); // 結果: false
console.log(isInteger('abc')); // 結果: false

この方法は、正規表現を使用するため、処理速度が遅くなります。また、小数点以下の桁数が非常に多い数値の場合、誤判定が発生する可能性があります。

  • 高速かつシンプルな判定が必要な場合: ビット演算子を使う
  • NaNInfinity などの特殊な値も正しく判定したい場合: Math.floor() 関数を使う
  • 正規表現を用いた柔軟な判定が必要な場合: 文字列に変換して比較する

javascript types numbers


crypto.randomUUID() を使ってUUIDを生成する

JavaScriptでGUID/UUIDを生成するには、いくつかの方法があります。crypto. randomUUID()を使うNode. js 14. 17. 0以降と一部のブラウザでは、crypto. randomUUID()というAPIを使用して、ランダムなUUIDを生成できます。このAPIは、最もシンプルで安全な方法の一つです。...


【徹底解説】jQueryを使ってdivのinnerHTMLを自由自在に操る

jQueryを使用してdivのinnerHTMLを置き換える方法はいくつかあります。 以下では、最も一般的な方法をいくつか紹介します。方法1:html()メソッドを使用するhtml()メソッドは、divのinnerHTMLプロパティを設定するために使用できます。 以下は、divのinnerHTMLを"Hello World!"に置き換える例です。...


JavaScriptで省略記号「…」出現時にツールチップを表示する方法

このチュートリアルでは、HTML、CSS、JavaScript を使って、省略記号出現時にのみツールチップを表示する方法を解説します。必要なものテキストエディタウェブブラウザ手順HTML を作成するまず、HTML ファイルを作成し、省略記号を含むテキストを記述します。以下の例では、ellipsis-text という ID を持つ span 要素の中にテキストを配置しています。...


Arrow functions、let/const、テンプレートリテラル…Node.js 0.12でES6を体感しよう!

以下、Node. js 0.12で利用可能な主要なES6機能をいくつか紹介します。Arrow functions: 関数をより簡潔に記述できる新しい構文です。例:let and const keywords: 変数宣言に使用される新しいキーワードです。letはブロックスコープ、constは再代入不可な変数を宣言します。例:...


JavaScriptデバッガで「DevTools failed to load SourceMap」?もう悩まない!原因と解決策を完全網羅

このエラーにはいくつかの原因が考えられます。ソースマップが破損している: ソースマップファイルが破損している場合、DevTools はそれを正しく読み込めません。ソースマップが間違った場所にある: ソースマップファイルが拡張機能のコードと同じディレクトリにない場合、DevTools はそれを 찾을 수 없습니다...


SQL SQL SQL SQL Amazon で見る



【初心者向け】JavaScriptで数値チェックのすべて!isNaN(), isFinite(), 正規表現を使いこなそう

typeof 演算子を使う最も簡単な方法は、typeof 演算子を使うことです。typeof 演算子は、オペランドの型を返します。isNaN() 関数を使うisNaN() 関数は、引数が数値でないかどうかを判断します。つまり、数値であるかどうかを判定することができます。