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
变得如此之小以至于无法与 0
和 1/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]"
我知道 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
变得如此之小以至于无法与 0
和 1/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]"