このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Number.isInteger()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年9月.
Number.isInteger() は静的メソッドで、渡された値が整数かどうかを判定します。
In this article
試してみましょう
function fits(x, y) { if (Number.isInteger(y / x)) { return "Fits!"; } return "Does NOT fit!";}console.log(fits(5, 10));// 予想される結果: "Fits!"console.log(fits(5, 11));// 予想される結果: "Does NOT fit!"構文
Number.isInteger(value)引数
value整数かどうかを判定される値です。
返値
論理値で、渡された値が整数であればtrue です。それ以外の場合はfalse です。
解説
指定された値が整数の場合はtrue を返し、そうでない場合はfalse を返します。NaN もしくはInfinity の場合もfalse を返します。このメソッドは整数として表すことができる浮動小数点数もtrue を返します。値が数値でない場合は常にfalse を返します。
数値リテラルの中には、ECMAScript の浮動小数点数エンコーディング (IEEE-754) の精度制限により、整数でないように見えても実は整数を表しているものがあることに注意してください。例えば、5.0000000000000001 は5 と1e-16 だけ異なりますが、これは小さすぎて表しきれません。(参考までに、Number.EPSILON は、1 と 1 より大きい次の表現可能な浮動小数点数の間の距離を格納しており、それはおよそ2.22e-16 です)。したがって、5.0000000000000001 は5 と同じエンコーディングで表されますので、Number.isInteger(5.000000000001) はtrue を返すことになります。
同様の意味で、Number.MAX_SAFE_INTEGER の大きさ前後の数値は精度を失い、整数でなくてもNumber.isInteger がtrueを返すようになる。(実際の閾値は、10 進数を表すのに何ビット必要かによって変わります。例えば、Number.isInteger(450000000000.1) はtrue ですが、Number.isInteger(450000000000.5) はfalse です。)
例
>isInteger の使用
Number.isInteger(0); // trueNumber.isInteger(1); // trueNumber.isInteger(-100000); // trueNumber.isInteger(99999999999999999999999); // trueNumber.isInteger(0.1); // falseNumber.isInteger(Math.PI); // falseNumber.isInteger(NaN); // falseNumber.isInteger(Infinity); // falseNumber.isInteger(-Infinity); // falseNumber.isInteger("10"); // falseNumber.isInteger(true); // falseNumber.isInteger(false); // falseNumber.isInteger([1]); // falseNumber.isInteger(5.0); // trueNumber.isInteger(5.000000000000001); // falseNumber.isInteger(5.0000000000000001); // true(精度が落ちるため)Number.isInteger(4500000000000000.1); // true(精度が落ちるため)仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-number.isinteger> |