JavaScript/Number/POSITIVE INFINITY
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_INFINITY
はNumber
オブジェクトのプロパティとしてアクセスします。 - 変更可能性: 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
オブジェクトに他の特殊な値も定義しています:
Number.NEGATIVE_INFINITY
: 負の無限大Number.NaN
: 数値ではない値Number.MAX_VALUE
: 表現可能な最大の正の値Number.MIN_VALUE
: 表現可能な最小の正の値Number.MAX_SAFE_INTEGER
: 安全に表現できる最大の整数Number.MIN_SAFE_INTEGER
: 安全に表現できる最小の整数Number.EPSILON
: 数値の丸め誤差を表す最小値
脚註
- ↑
Number.POSITIVE_INFINITY
はグローバルオブジェクトの Infinity と同じ値を持ちますが、Number
オブジェクトのプロパティとして提供されています。