JavaScript/Number/MAX VALUE

カテゴリ:Book:JavaScript#Number/MAX%20VALUE%20

Number.MAX_VALUE は、ECMAScript における Number オブジェクトのプロパティで、JavaScript で表現可能な最大の正の値を表します。この値は、IEEE 754 浮動小数点数の仕様に基づいており、約 の値を持ちます[1]

構文

Number.MAX_VALUE

Number.MAX_VALUE の値は、IEEE 754 倍精度浮動小数点数形式で表現可能な最大の正の有限数値である約 です。

特性

Number.MAX_VALUE には、以下のような特性があります:

  • 読み取り専用: このプロパティは変更できません。プロパティ属性は { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } に設定されています。
  • データプロパティ: Number.MAX_VALUE は値プロパティであり、メソッドではありません。
  • 比較: Number.POSITIVE_INFINITY より小さく、あらゆる有限数より大きいです(ただし 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 を超える計算結果が無限大になる例を示しています。

// 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 を超える計算が Infinity になることや、浮動小数点数の精度による動作の特徴を示しています。

数値演算における 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 を含む演算の結果と、その値を超えた場合に Infinity になる例を示しています。

比較演算

以下のプログラムは、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.isFinite()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 の間、または 0)にあるかをチェックする関数の例を示しています。

Number.MAX_VALUE と Infinity の違い

Number.MAX_VALUEInfinity は以下の点で違いがあります:

// 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 オブジェクトに他の特殊な値も定義しています:

脚註

  1. Number.MAX_VALUE は JavaScript の数値表現における上限であり、これを超える値は Number.POSITIVE_INFINITY として表現されます。

外部リンク

カテゴリ:Book:JavaScript#Number/MAX%20VALUE%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension