JavaScriptには0-0があります。これはIEEE 754に沿ったものです。

console.log(-0); // -0;

マイナス0の性質

  • -0 === 0の結果はtrue
  • -0 < 0-0 > 0の結果はfalse
  • -0 + 0の結果は0、マイナスが取り除かれます
  • Math.abs(-0)の結果も0
  • Math.ceil(-0)Math.round(-0)Math.floor(-0)の結果も0
  • Math.cos(-0)の結果は1Math.cos(0)と同じです
  • Math.sign(-0)の結果は-0、元の木阿弥です
  • Object.is(-0, 0)の結果はfalse、これでマイナスの有無を区別できますが、IE非対応です
  • 1 / -0の結果は-Infinity1 / 0であればInfinityなので区別できます
  • (-0).toString()(-0).toPrecision(1)(-0).toFixed(0)の結果は"0"
  • String(-0)-0+''とテンプレート文字列の${-0}の結果は"0"

どうするとマイナス0になるか

以下の式の結果は全て-0になります。

  • +(-0)
  • +'-0'
  • Number('-0')
  • -1 / Infinity
  • -0.0
  • -0 - 0
  • 0 * -1
  • -0 % 1
  • Math.sign(-0)
  • Math.trunc(-0)
  • Math.trunc(-0.99)
  • Math.ceil(-0)
  • Math.ceil(-0.99)

参考リンク