JavaScript 中的负零有很大不同的例子/场景吗?

Any examples / scenarios where negative zero in JavaScript make a big difference?

我知道 JavaScript 有一个正常的零 0(称为正零 +0)和一个负零 -0,但是我从来没有遇到过必须使用 -0 的情况.

stack overflow 上有一些关于正零和负零的现有帖子 similar/different,但其中 none 解释了它的真实生活 use-cases/examples。

假设我们正在研究函数 y = 1/x 并且我们想知道当 x 很小时它的行为方式。让我们取 x=1, x=0.1, x=0.01 并计算 func:

x = 1;
while(x) {
    x /= 10;
    document.write(x + ' ' + 1/x + '<br>');
}

如您所见,它趋近于正无穷大。 1/x 等于 Infinity,因为在某些时候 x 变得如此之小以至于无法与 01/0 = Infinity 区分开来。注意这是"positive"无穷大,即"a very big number".

现在,让我们从 -1 而不是 x=1 开始:

x = -1;
while(x) {
    x /= 10;
    document.write(x + ' ' + 1/x + '<br>');
}

现在的答案是-Infinity,即函数趋近于负无穷大,"a very small number"。当然,这也是正确的,但是计算机是怎么得到的呢?我们刚刚了解到 1/0 = (positive) Infinity?秘密在于最后一个片段中的零实际上是负数,所以最后一次迭代的 x-0 而不仅仅是 0,并且 1/-0 给出 -Infinity.如果没有带符号的零,最后一个片段会给出错误的结果。

希望能稍微解释一下。

包含该标志有科学原因,您可以在 wikipedia 上更深入地阅读。

来自维基百科关于符号零的文章:

非正式地,可以使用符号“-0”来表示四舍五入为零的负值。当负号很重要时,这种表示法可能很有用;例如,在制表摄氏温度时,负号表示低于冰点。

在统计力学中,有时会用负温度来描述粒子数反转的系统,可以认为温度大于正无穷大,因为粒子数分布函数中的能量系数为-1/温度。在这种情况下,-0 的温度是比任何其他负温度都大的(理论)温度,对应于人口反转的(理论)最大可想象程度,与 +0 相反的极端。[5]"