JavaScript/Number/NEGATIVE INFINITY
Number.NEGATIVE_INFINITY
は、ECMAScript における Number
オブジェクトのプロパティで、負の無限大(-∞)を表す特殊な値です。この値は、非常に小さな数値計算の結果や、ゼロによる負の数の除算などの特定の数学的操作から生じる値を表します[1]。
構文
Number.NEGATIVE_INFINITY
値
Number.NEGATIVE_INFINITY
の値は、IEEE 754 浮動小数点数表現における負の無限大(-∞)です。この値はグローバルの -Infinity
と同じです。
特性
Number.NEGATIVE_INFINITY
には、以下のような特性があります:
- 読み取り専用: このプロパティは変更できません。プロパティ属性は { [[Writable]]:
false
, [[Enumerable]]:false
, [[Configurable]]:false
} に設定されています。 - データプロパティ:
Number.NEGATIVE_INFINITY
は値プロパティであり、メソッドではありません。 - 比較: あらゆる有限数より小さく、
Number.POSITIVE_INFINITY
より小さいです。
例
基本的な使用法
以下のプログラムは、Number.NEGATIVE_INFINITY
の基本的な使用法を示しています。
// Number.NEGATIVE_INFINITY の値を表示 console.log(Number.NEGATIVE_INFINITY); // -Infinity // グローバルの -Infinity との比較 console.log(Number.NEGATIVE_INFINITY === -Infinity); // true
このプログラムでは、Number.NEGATIVE_INFINITY
とグローバルの -Infinity
が同じ値であることを示しています。
無限大の生成
以下のプログラムは、様々な方法で負の無限大が生成される例を示しています。
// 負の数のゼロによる除算 console.log(-1 / 0); // -Infinity // 非常に小さな負の数値 console.log(-1.7976931348623157e+308 * 2); // -Infinity // 負の無限大を含む演算 console.log(Number.NEGATIVE_INFINITY - 5); // -Infinity console.log(Number.NEGATIVE_INFINITY * 10); // -Infinity console.log(Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY); // -Infinity
このプログラムでは、負の無限大が生成される様々な状況と、負の無限大を含む演算の結果を示しています。
数値演算における無限大
以下のプログラムは、負の無限大を含む様々な数値演算の結果を示しています。
// 負の無限大を含む演算 console.log(Number.NEGATIVE_INFINITY + 42); // -Infinity console.log(Number.NEGATIVE_INFINITY - 42); // -Infinity console.log(Number.NEGATIVE_INFINITY * 42); // -Infinity console.log(Number.NEGATIVE_INFINITY / 42); // -Infinity // 符号の変化する演算 console.log(Number.NEGATIVE_INFINITY * -1); // Infinity console.log(Number.NEGATIVE_INFINITY / -2); // Infinity // 特殊な演算 console.log(Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY); // NaN console.log(Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY); // NaN console.log(0 * Number.NEGATIVE_INFINITY); // NaN // 正の無限大との演算 console.log(Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY); // NaN console.log(Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY); // NaN
このプログラムでは、負の無限大を含む様々な演算の結果を示しています。特に、不定形式(-∞ - (-∞)
、-∞ / -∞
、0 * -∞
など)は NaN
になります。
比較演算
以下のプログラムは、負の無限大を含む比較演算の結果を示しています。
// 比較演算 console.log(Number.NEGATIVE_INFINITY < -1000000); // true console.log(Number.NEGATIVE_INFINITY > -Number.MAX_VALUE); // false // 等価比較 console.log(Number.NEGATIVE_INFINITY === Number.NEGATIVE_INFINITY); // true console.log(Number.NEGATIVE_INFINITY === Number.POSITIVE_INFINITY); // false // isFinite による検証 console.log(isFinite(Number.NEGATIVE_INFINITY)); // false console.log(Number.isFinite(Number.NEGATIVE_INFINITY)); // false
このプログラムでは、Number.NEGATIVE_INFINITY
が他の数値や自身との比較においてどのように振る舞うかを示しています。
実用的な例
範囲の初期化
以下のプログラムは、最大値を見つけるときに Number.NEGATIVE_INFINITY
を初期値として使用する例を示しています。
// 配列内の最大値を見つける function findMaximum(array) { let max = Number.NEGATIVE_INFINITY; for (let i = 0; i < array.length; i++) { if (array[i] > max) { max = array[i]; } } return max; } const numbers = [5, 2, 9, 1, 7]; console.log(findMaximum(numbers)); // 9
このプログラムでは、Number.NEGATIVE_INFINITY
を初期値として使用することで、配列内のどんな数値も最初の比較で最大値として設定されることを保証しています。
下限値の設定
以下のプログラムは、計算結果が特定の下限値を下回らないようにする例を示しています。
// 除算演算の結果を制限する function safeDivide(numerator, denominator, lowerBound = Number.NEGATIVE_INFINITY) { const result = numerator / denominator; if (result < lowerBound) { console.log(<code>結果 ${result} は下限 ${lowerBound} を下回りました</code>); return lowerBound; } return result; } console.log(safeDivide(-10, 0.001, -1000)); // -1000(結果は -10000 だが、-1000 に制限される) console.log(safeDivide(-5, 2)); // -2.5(制限なし)
このプログラムでは、計算結果が指定された下限値を下回る場合に、その下限値を返す例を示しています。
グローバルの -Infinity との違い
Number.NEGATIVE_INFINITY
とグローバルの -Infinity
は以下の点で違いがあります:
- アクセス:
Number.NEGATIVE_INFINITY
はNumber
オブジェクトのプロパティとしてアクセスします。 - 変更可能性: ECMAScript 5 以降、グローバルの
-Infinity
は非厳格モードでは変更可能ですが、Number.NEGATIVE_INFINITY
は読み取り専用です。 - 値: 両者は同じ値を持ちます。
// グローバルの -Infinity は直接アクセスできないが、Infinity に符号を付けることでアクセス可能 let negInf = -Infinity; negInf = -100; // 変数は上書き可能 console.log(negInf); // -100 // Number.NEGATIVE_INFINITY は読み取り専用 // Number.NEGATIVE_INFINITY = -100; // TypeError: Cannot assign to read only property
その他の Number オブジェクトの特殊値
ECMAScript は、Number
オブジェクトに他の特殊な値も定義しています:
Number.POSITIVE_INFINITY
: 正の無限大Number.NaN
: 数値ではない値Number.MAX_VALUE
: 表現可能な最大の正の値Number.MIN_VALUE
: 表現可能な最小の正の値Number.MAX_SAFE_INTEGER
: 安全に表現できる最大の整数Number.MIN_SAFE_INTEGER
: 安全に表現できる最小の整数Number.EPSILON
: 数値の丸め誤差を表す最小値
脚註
- ↑
Number.NEGATIVE_INFINITY
はグローバルオブジェクトの-Infinity
と同じ値を持ちますが、Number
オブジェクトのプロパティとして提供されています。