JavaScript/Number/MAX VALUE
[[../../Number/MAX_VALUE|Number.MAX_VALUE]] は、ECMAScript における [[../../Number|Number]] オブジェクトのプロパティで、JavaScript で表現可能な最大の正の値を表します。この値は、IEEE 754 浮動小数点数の仕様に基づいており、約 の値を持ちます[1]。
構文
Number.MAX_VALUE
値
[[../../Number/MAX_VALUE|Number.MAX_VALUE]] の値は、IEEE 754 倍精度浮動小数点数形式で表現可能な最大の正の有限数値である約 です。
特性
[[../../Number/MAX_VALUE|Number.MAX_VALUE]] には、以下のような特性があります:
- 読み取り専用: このプロパティは変更できません。プロパティ属性は { [[Writable]]:
[[../../false|false]], [[Enumerable]]:[[../../false|false]], [[Configurable]]:[[../../false|false]]} に設定されています。 - データプロパティ:
[[../../Number/MAX_VALUE|Number.MAX_VALUE]]は値プロパティであり、メソッドではありません。 - 比較:
[[../../Number/POSITIVE_INFINITY|Number.POSITIVE_INFINITY]]より小さく、あらゆる有限数より大きいです(ただし[[../../Number/MAX_VALUE|Number.MAX_VALUE]]自身を除く)。
例
基本的な使用法
以下のプログラムは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] の基本的な使用法を示しています。
// Number.MAX_VALUE の値を表示 console.log(Number.MAX_VALUE); // 1.7976931348623157e+308 // Number.MAX_VALUE の型を確認 console.log(typeof Number.MAX_VALUE); // number
このプログラムでは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] の値とその型が通常の数値型であることを示しています。
上限値の超過
以下のプログラムは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] を超える計算結果が無限大になる例を示しています。
// MAX_VALUE を超える計算 console.log(Number.MAX_VALUE * 2); // Infinity // MAX_VALUE のちょうど境界での計算 console.log(Number.MAX_VALUE + 1 === Number.MAX_VALUE); // true (精度の制限により) console.log(Number.MAX_VALUE * 1.0000000000000002 === Number.MAX_VALUE); // false // 無限大との比較 console.log(Number.MAX_VALUE < Number.POSITIVE_INFINITY); // true
このプログラムでは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] を超える計算が [[../../Infinity|Infinity]] になることや、浮動小数点数の精度による動作の特徴を示しています。
数値演算における MAX_VALUE
以下のプログラムは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] を含む様々な数値演算の結果を示しています。
// MAX_VALUE を含む基本的な演算 console.log(Number.MAX_VALUE + 42); // 1.7976931348623157e+308 (精度の制限により変化なし) console.log(Number.MAX_VALUE * 0.5); // 8.988465674311579e+307 (半分の値) console.log(Number.MAX_VALUE / 2); // 8.988465674311579e+307 (同上) // MAX_VALUE を超える演算 console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity console.log(Number.MAX_VALUE * 1.1); // Infinity // 特殊な演算 console.log(Number.MAX_VALUE * 0); // 0 console.log(Number.MAX_VALUE * -1); // -1.7976931348623157e+308
このプログラムでは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] を含む演算の結果と、その値を超えた場合に [[../../Infinity|Infinity]] になる例を示しています。
比較演算
以下のプログラムは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] を含む比較演算の結果を示しています。
// 比較演算 console.log(Number.MAX_VALUE > 1000000); // true console.log(Number.MAX_VALUE < Number.POSITIVE_INFINITY); // true // 等価比較 console.log(Number.MAX_VALUE === Number.MAX_VALUE); // true console.log(Number.MAX_VALUE === Infinity); // false // isFinite による検証 console.log(isFinite(Number.MAX_VALUE)); // true console.log(Number.isFinite(Number.MAX_VALUE)); // true
このプログラムでは、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] が他の数値との比較においてどのように振る舞うかを示しています。特に、[[../../Number/MAX_VALUE|Number.MAX_VALUE]] は有限の値であるため、[[../../Number/isFinite|Number.isFinite()]] は [[../../true|true]] を返します。
実用的な例
上限値の設定
以下のプログラムは、計算結果が特定の上限値を超えないようにする例を示しています。
// 計算結果を制限する関数 function clampValue(value, upperBound = Number.MAX_VALUE) { if (value > upperBound) { console.log(<code>結果 ${value} は上限 ${upperBound} を超えました</code>); return upperBound; } return value; } // 大きな値の計算を制限 console.log(clampValue(1e20 * 1e20, 1e30)); // 1e30(結果は 1e40 だが、1e30 に制限される) console.log(clampValue(5e15)); // 5e15(制限なし)
このプログラムでは、計算結果が指定された上限値を超える場合に、その上限値を返す関数の例を示しています。
数値の範囲チェック
以下のプログラムは、数値が JavaScript で安全に扱える範囲内にあるかをチェックする例を示しています。
// 数値が JavaScript で安全に扱える範囲内かをチェックする関数 function isInSafeRange(num) { // 有限であり、表現可能な範囲内にあるかをチェック if (!isFinite(num)) { return false; } const absNum = Math.abs(num); // 大きすぎないか、小さすぎないかをチェック return absNum <= Number.MAX_VALUE && (absNum >= Number.MIN_VALUE || absNum === 0); } console.log(isInSafeRange(1e200)); // true console.log(isInSafeRange(Number.MAX_VALUE * 2)); // false (Infinity) console.log(isInSafeRange(1e-320)); // false (小さすぎる) console.log(isInSafeRange(0)); // true
このプログラムでは、指定された数値が JavaScript で安全に扱える範囲内(Number.MIN_VALUE から [[../../Number/MAX_VALUE|Number.MAX_VALUE]] の間、または 0)にあるかをチェックする関数の例を示しています。
Number.MAX_VALUE と Infinity の違い
[[../../Number/MAX_VALUE|Number.MAX_VALUE]] と [[../../Infinity|Infinity]] は以下の点で違いがあります:
- 有限と無限:
[[../../Number/MAX_VALUE|Number.MAX_VALUE]]は有限の値ですが、[[../../Infinity|Infinity]]は無限の値です。 - 数学的演算:
[[../../Number/MAX_VALUE|Number.MAX_VALUE]]に対する演算は通常の数値演算規則に従いますが、[[../../Infinity|Infinity]]は特殊な演算規則に従います。 - 比較:
[[../../Number/MAX_VALUE|Number.MAX_VALUE]]は[[../../Infinity|Infinity]]より小さい値です。 - isFinite:
[[../../Number/MAX_VALUE|Number.MAX_VALUE]]は[[../../Number/isFinite|Number.isFinite()]]で[[../../true|true]]を返しますが、[[../../Infinity|Infinity]]は[[../../false|false]]を返します。
// MAX_VALUE と Infinity の違いを示す例 console.log(isFinite(Number.MAX_VALUE)); // true console.log(isFinite(Infinity)); // false console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity console.log(Infinity + Infinity); // Infinity console.log(Number.MAX_VALUE * 0); // 0 console.log(Infinity * 0); // NaN
その他の Number オブジェクトの特殊値
ECMAScript は、[[../../Number|Number]] オブジェクトに他の特殊な値も定義しています:
[[../../Number/POSITIVE_INFINITY|Number.POSITIVE_INFINITY]]: 正の無限大[[../../Number/NEGATIVE_INFINITY|Number.NEGATIVE_INFINITY]]: 負の無限大[[../../Number/NaN|Number.NaN]]: 数値ではない値[[../../Number/MIN_VALUE|Number.MIN_VALUE]]: 表現可能な最小の正の値[[../../Number/MAX_SAFE_INTEGER|Number.MAX_SAFE_INTEGER]]: 安全に表現できる最大の整数[[../../Number/MIN_SAFE_INTEGER|Number.MIN_SAFE_INTEGER]]: 安全に表現できる最小の整数[[../../Number/EPSILON|Number.EPSILON]]: 数値の丸め誤差を表す最小値
脚註
- ↑
[[../../Number/MAX_VALUE|Number.MAX_VALUE]]は JavaScript の数値表現における上限であり、これを超える値は[[../../Number/POSITIVE_INFINITY|Number.POSITIVE_INFINITY]]として表現されます。