コンテンツにスキップ

JavaScript/-0

出典: フリー教科書『ウィキブックス(Wikibooks)』

-0 は JavaScript の数値型における特殊な値で、正の 0 (+0 または単に 0) と区別されます。数値型では 0-0 は見た目や多くの操作において同じように扱われますが、浮動小数点数の仕様や一部の演算では違いが現れます。

-0 は以下のような場合に生成されることがあります:

  • 負の数値を 0 に近づける演算(例えば -1 / Infinity)。
  • 一部の数学的関数の結果。

特徴

[編集]
  • typeof -0"number" を返します。
  • 0 === -0true を返します。
  • 浮動小数点数として -0+0 と異なる符号を持つため、一部の演算や特定の条件下で区別されます。

使用例

[編集]

以下は -0 の基本的な特性を示します。

console.log(-0); // -0
console.log(0 === -0); // true
console.log(Object.is(0, -0)); // false
console.log(1 / -0); // -Infinity
console.log(1 / 0); // Infinity

Object.is() を使うことで、0-0 を明確に区別できます。

console.log(Object.is(0, -0)); // false
console.log(Object.is(-0, -0)); // true
console.log(Object.is(0, 0)); // true

-0 と演算

[編集]

多くの数学演算では -0+0 が同じように扱われますが、いくつかの演算では違いが明確になります。

// 負の 0 の生成
console.log(-1 / Infinity); // -0

// 正負の区別
console.log(Math.sign(-0)); // -0
console.log(Math.sign(0)); // 0

// 絶対値
console.log(Math.abs(-0)); // 0

特殊なケース

[編集]
  1. 符号の区別
    • Math.sign(-0)-0 を返しますが、Math.sign(0)+0 を返します。
    • これにより、符号を特定できる場合があります。
  2. 除算
    • 1 / -0 の結果は -Infinity です。
    • 一方、1 / 0 の結果は Infinity です。
  3. JSON の表現
    • -0 を JSON に変換すると、単純に 0 になります。
    console.log(JSON.stringify(-0)); // "0"
    

浮動小数点仕様における -0

[編集]

-0 は IEEE 754 浮動小数点規格に基づいており、符号ビットを持つことで +0 と区別されます。この仕様により、数値型で符号を保持する特性が保証されています。

注意点

[編集]
  • 多くの操作では -00 は区別されないため、意図的に -0 を使用する場合は注意が必要です。
  • 浮動小数点の動作や特定の演算で予期せぬ結果が生じることがあります。

仕様

[編集]

-0 は ECMAScript の数値型仕様に含まれており、すべての JavaScript 実装でサポートされています。

関連項目

[編集]

ブラウザサポート

[編集]

-0 の特性はすべての主要なブラウザおよび JavaScript 実行環境でサポートされています。

ブラウザ サポート
Chrome サポート済み
Firefox サポート済み
Safari サポート済み
Edge サポート済み
Internet Explorer サポート済み