JavaScript/Number/POSITIVE INFINITY

カテゴリ:Book:JavaScript#Number/POSITIVE%20INFINITY%20

Number.POSITIVE_INFINITY は、ECMAScript における Number オブジェクトのプロパティで、正の無限大(+∞)を表す特殊な値です。この値は、非常に大きな数値計算の結果や、ゼロによる除算などの特定の数学的操作から生じる値を表します[1]

構文

Number.POSITIVE_INFINITY

Number.POSITIVE_INFINITY の値は、IEEE 754 浮動小数点数表現における正の無限大(+∞)です。この値はグローバルの Infinity と同じです。

特性

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

  • 読み取り専用: このプロパティは変更できません。プロパティ属性は { Writable: false, Enumerable: false, Configurable: false } に設定されています。
  • データプロパティ: Number.POSITIVE_INFINITY は値プロパティであり、メソッドではありません。
  • 比較: あらゆる有限数より大きく、Number.NEGATIVE_INFINITY より大きいです。

基本的な使用法

以下のプログラムは、Number.POSITIVE_INFINITY の基本的な使用法を示しています。

// Number.POSITIVE_INFINITY の値を表示
console.log(Number.POSITIVE_INFINITY); // Infinity

// グローバルの Infinity との比較
console.log(Number.POSITIVE_INFINITY === Infinity); // true

このプログラムでは、Number.POSITIVE_INFINITY とグローバルの Infinity が同じ値であることを示しています。

無限大の生成

以下のプログラムは、様々な方法で正の無限大が生成される例を示しています。

// ゼロによる除算
console.log(1 / 0); // Infinity

// 非常に大きな数値
console.log(1.7976931348623157e+308 * 2); // Infinity

// 無限大を含む演算
console.log(Number.POSITIVE_INFINITY + 5); // Infinity
console.log(Number.POSITIVE_INFINITY * 10); // Infinity
console.log(Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY); // Infinity

このプログラムでは、正の無限大が生成される様々な状況と、無限大を含む演算の結果を示しています。

数値演算における無限大

以下のプログラムは、無限大を含む様々な数値演算の結果を示しています。

// 無限大を含む演算
console.log(Number.POSITIVE_INFINITY + 42); // Infinity
console.log(Number.POSITIVE_INFINITY - 42); // Infinity
console.log(Number.POSITIVE_INFINITY * 42); // Infinity
console.log(Number.POSITIVE_INFINITY / 42); // Infinity

// 特殊な演算
console.log(Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY); // NaN
console.log(Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY); // NaN
console.log(0 * Number.POSITIVE_INFINITY); // NaN

// 負の無限大との演算
console.log(Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY); // NaN
console.log(Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY); // NaN

このプログラムでは、無限大を含む様々な演算の結果を示しています。特に、不定形式(∞ - ∞∞ / ∞0 * ∞ など)は NaN になります。

比較演算

以下のプログラムは、無限大を含む比較演算の結果を示しています。

// 比較演算
console.log(Number.POSITIVE_INFINITY > 1000000); // true
console.log(Number.POSITIVE_INFINITY < Number.MAX_VALUE); // false

// 等価比較
console.log(Number.POSITIVE_INFINITY === Number.POSITIVE_INFINITY); // true
console.log(Number.POSITIVE_INFINITY === Number.NEGATIVE_INFINITY); // false

// isFinite による検証
console.log(isFinite(Number.POSITIVE_INFINITY)); // false
console.log(Number.isFinite(Number.POSITIVE_INFINITY)); // false

このプログラムでは、Number.POSITIVE_INFINITY が他の数値や自身との比較においてどのように振る舞うかを示しています。

実用的な例

範囲の初期化

以下のプログラムは、最小値を見つけるときに Number.POSITIVE_INFINITY を初期値として使用する例を示しています。

// 配列内の最小値を見つける
function findMinimum(array) {
  let min = Number.POSITIVE_INFINITY;
  
  for (let i = 0; i < array.length; i++) {
    if (array[i] < min) {
      min = array[i];
    }
  }
  
  return min;
}

const numbers = [5, 2, 9, 1, 7];
console.log(findMinimum(numbers)); // 1

このプログラムでは、Number.POSITIVE_INFINITY を初期値として使用することで、配列内のどんな数値も最初の比較で最小値として設定されることを保証しています。

無限ループの検出

以下のプログラムは、計算が収束せず無限大に発散する場合を検出する例を示しています。

// 級数の和を計算(発散のチェック付き)
function calculateSum(terms) {
  let sum = 0;
  
  for (let i = 0; i < terms; i++) {
    sum += 1 / Math.pow(0.5, i);
    
    if (sum === Number.POSITIVE_INFINITY) {
      console.log(<code>級数は ${i + 1} 項目で発散しました</code>);
      break;
    }
  }
  
  return sum;
}

console.log(calculateSum(100)); // 級数は発散し、Infinity が返される

このプログラムでは、計算結果が無限大になった時点で計算を停止する例を示しています。

グローバルの Infinity との違い

Number.POSITIVE_INFINITY とグローバルの Infinity は以下の点で違いがあります:

  • アクセス: Number.POSITIVE_INFINITYNumber オブジェクトのプロパティとしてアクセスします。
  • 変更可能性: ECMAScript 5 以降、グローバルの Infinity は非厳格モードでは変更可能ですが、Number.POSITIVE_INFINITY は読み取り専用です。
  • : 両者は同じ値を持ちます。
// グローバルの Infinity は非厳格モードでは上書き可能(ただし実際には無効)
Infinity = 100; // 非厳格モードでは成功するが効果はない
console.log(Infinity); // Infinity(上書きできない)

// Number.POSITIVE_INFINITY は読み取り専用
// Number.POSITIVE_INFINITY = 100; // TypeError: Cannot assign to read only property

その他の Number オブジェクトの特殊値

ECMAScript は、Number オブジェクトに他の特殊な値も定義しています:

脚註

  1. Number.POSITIVE_INFINITY はグローバルオブジェクトの Infinity と同じ値を持ちますが、Number オブジェクトのプロパティとして提供されています。

外部リンク

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