JavaScript/Number/NEGATIVE INFINITY

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

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_INFINITYNumber オブジェクトのプロパティとしてアクセスします。
  • 変更可能性: 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 オブジェクトに他の特殊な値も定義しています:

脚註

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

外部リンク

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