This question already has answers here:
Are +0 and -0 the same?

(9个答案)



Differentiating +0 and -0

(8个答案)


6年前关闭。




我从来不明白为什么-00分开对待。

有趣的事实是0-0相等
> 0 === -0
true

然后,问题是:为什么-0 treated separately0+0
0前面的符号有关系吗?

在数学中,+0是一个比0稍大的值。同样,-0是一个比0稍低的值。例如:n / Infinity将返回+0n / -Infinity -0(假设n是大于0的实数)。这发生在数学上。

最佳答案

"Branch Cuts for Complex Elementary Functions or Much Ado About Nothing's Sign Bit "解决了签署零的原因。这种分析为IEEE-754提供了依据,这是大多数现代指令集的基础
和编程语言的浮点数行为。
简而言之,许多常见的数字函数可以在不带无符号零的位置处以带零符号连续,从而导致更少的NaN值和较少的特殊情况。除法就是这样一种功能。


要清楚一点,只有两个零值。 -0和+0。标记(0)可以代替标记(+0)出现的任何位置,而无需更改语义。


IEEE-754强制要求这种行为。
要测试两个数值是否为“相同”:

function same(x, y) {
  if (x === y) {
    if (x !== 0) {
      return true;  // Non-zero values.
    } else {
      return (1/x === 1/y);  // Test signed-ness of zeroes.
    }
  } else {
    return x !== x && y !== y;  // Treat NaNs the same
  }
}

10-06 04:15