This question already has answers here:
Are +0 and -0 the same?
(9个答案)
Differentiating +0 and -0
(8个答案)
6年前关闭。
我从来不明白为什么
有趣的事实是
然后,问题是:为什么
在数学中,
(9个答案)
Differentiating +0 and -0
(8个答案)
6年前关闭。
我从来不明白为什么
-0
与0
分开对待。有趣的事实是
0
与-0
相等> 0 === -0
true
然后,问题是:为什么
-0
treated separately比0
和+0
?0
前面的符号有关系吗?在数学中,
+0
是一个比0
稍大的值。同样,-0
是一个比0
稍低的值。例如:n / Infinity
将返回+0
和n / -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