+0和-0相同吗?

224

阅读ECMAScript 5.1规范,可以发现+0-0是有区别的。

那么为什么+0 === -0的结果会是true呢?


可能是区分+0和-0的重复问题。 - GolezTrol
9
请注意,在ES2015中,您可以使用Object.is来区分+0和-0。 - Benjamin Gruenbaum
1
引用《JavaScript权威指南》中的David Flanagan所说:当数值运算结果比最小可表示数字还要接近于零时,就会发生下溢。此时,JavaScript会返回0。如果下溢发生在负数上,JavaScript会返回一个特殊的值,即“负零”。 - RBT
11个回答

1

维基百科有一篇很好的文章来解释这个现象:http://en.wikipedia.org/wiki/Signed_zero

简而言之,在IEEE浮点规范中,+0和-0都有定义。它们两者在技术上与没有符号的0(即整数0)不同,但实际上它们都被计算为零,因此在所有实际目的下,这种区别可以忽略不计。


2
这并不完全正确--例如在JavaScript中,1/-0 == 1/0的结果为false。它们不会“计算”出一个神奇的无符号零,因为在IEEE 754中不存在“无符号整数零”这样的概念。 - BrainSlugs83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接