JavaScript中的负零?

6

我刚刚注意到在 JavaScript 中可以做以下操作:

var z = -0;
console.log(z); // prints -0

为什么一元取反运算符适用于零?

这是JavaScript的许多怪异行为之一,还是它(以某种方式)有目的?


P.S.:

在Firefox 38.0a2和Chrome 41.0.2272上似乎会发生。在Node.js v0.10.36上不会发生。IE我不知道。


2
请看这个链接:https://dev59.com/lWw05IYBdhLWcg3weBru - Spencer May
它在 io.js (1.6.1) 中可以运行。 - thriqon
2个回答

11
你刚刚遇到了有符号零

IEEE 754浮点算术标准(目前被大多数支持浮点数的计算机和编程语言使用)要求+0和-0。带符号零的实数算术可以视为扩展实数线的变体,使得1/−0 = −∞和1/+0 = +∞; 只有±0/±0和±∞/±∞的除法未定义。

在Javascript中所有数字都是浮点数,因此零必须带符号。

0

我认为这不是一个问题。至少alert(-0 == 0)返回true。我猜如果有一位用于符号,那么当值为0时,这一位也可以被设置。然而,它仍然是相同的数字。


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