0

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

有一些关于堆栈溢出的现有帖子关于正零和负零是如何相似/不同的,但它们都没有解释现实生活中的用例/示例。

4

2 回答 2

2

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

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

如您所见,它接近正无穷大。1/x等于,Infinity因为在某些时候x变得如此之小以至于无法与0和区分1/0 = Infinity。请注意,这是“正”无穷大,即“一个非常大的数字”。

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

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

现在的答案是-Infinity,即函数趋向于负无穷大,“一个很小的数”。当然,这也是正确的,但是计算机是怎么得到的呢?我们刚刚学到了1/0 = (positive) Infinity?秘诀是最后一个片段中的零实际上是负数,所以x在最后一次迭代中是-0而不是只是0,并且1/-0给出-Infinity。如果没有带符号的零,最后一个片段会给出不正确的结果。

希望能解释一下。

于 2016-09-15T12:52:27.090 回答
0

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

来自关于签名零的维基百科文章:

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

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

于 2019-01-29T19:56:36.557 回答