JavaScriptのNumber.isSafeInteger()関数とは?安全な整数の判定方法を解説
Number.isSafeInteger()は、Numberオブジェクトのメソッドの一つで、引数に渡された数値が「安全な整数(safe integer)」であるかどうかを判定します。安全な整数であれば true を返し、そうでなければ false を返します。
ここでいう「安全な整数」とは、IEEE-754の倍精度浮動小数点数として誤差なく正確に表現できる整数のことです。具体的には、-9007199254740991(-(253 - 1))〜 9007199254740991(253 - 1) の範囲内の整数を指します。この範囲を超える数値や、小数などは正確な演算が保証されないため、「安全ではない」と判定されます。
構文
書式は以下のとおりです。
Number.isSafeInteger(90071991);
引数には判定対象の数値を渡します。戻り値はブール値(true / false)です。
使用例
次の例では、90071991 が安全な整数であるかどうかを判定し、結果によって表示するメッセージを切り替えています。
<html>
<head>
<title>JavaScript サンプル</title>
</head>
<body>
<script type="text/javascript">
var result = Number.isSafeInteger(90071991);
if(result) {
document.write("この数値は安全な整数です");
}else {
document.write("この数値は安全な整数ではありません");
}
</script>
</body>
</html>
実行結果
この数値は安全な整数です
さまざまな値での判定例
次に、小数・負の整数・計算式の結果をそれぞれこの関数に渡して、判定結果を確認してみましょう。
- 45.2 … 整数ではないため false
- -38 … 範囲内の負の整数なので true
- 0/8 … 計算結果が 0(安全な整数)なので true
<html>
<head>
<title>JavaScript サンプル</title>
</head>
<body>
<script type="text/javascript">
var result1 = Number.isSafeInteger(45.2);
document.write(result1);
document.write("<br>");
var result2 = Number.isSafeInteger(-38);
document.write(result2);
document.write("<br>");
var result3 = Number.isSafeInteger(0/8);
document.write(result3);
document.write("<br>");
</script>
</body>
</html>
実行結果
false true true
補足:安全な整数の上限・下限を確認するには
安全な整数の最大値と最小値は、それぞれ定数 Number.MAX_SAFE_INTEGER(9007199254740991)と Number.MIN_SAFE_INTEGER(-9007199254740991)として定義されています。大きな数値を扱う処理では、これらの定数と Number.isSafeInteger() を組み合わせることで、精度の低下によるバグを未然に防ぐことができます。
-
JavaScriptのTypedArray.entries()関数とは?使い方とサンプルコードを解説
TypedArray.entries()関数とはentries()は、TypedArray(型付き配列)オブジェクトが持つメソッドの一つで、その型付き配列のキー(インデックス)と値(要素)のペアを順番に取り出せる新しいArray Iteratorオブジェクトを返します。このイテレーターを利用することで、配列内の各要素だけでなく、その要素が配列のどの位置(インデックス)にあるのかも同時に取得できます。戻り値の各要素は「[インデックス, 値]」という形式の配列になっています。構文typedArray.entries()このメソッドは引数を受け取らず、呼び出すだけで新しいイテレーターオブジェクトを返
-
JavaScriptのNumber()関数とは?使い方とサンプルコードを解説
JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを