我刚才注意到我可以在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的Dunno。
答案 0 :(得分:7)
您刚刚遇到signed zero。
用于浮点运算的IEEE 754标准(目前大多数计算机和支持浮点数的编程语言使用)都需要+0和-0。带有符号零的实数算术可以被认为是扩展实数行的变体,使得1 / -0 =-∞和1 / + 0 = +∞;除了±0 /±0和±∞/±∞之外,除法是唯一的。
Javascript中的所有数字都是浮点数,因此必须对零进行签名。
答案 1 :(得分:-1)
我认为这不是问题。至少alert(-0 == 0)
返回true
。我想如果有一个用于符号的位,如果值为0
,也可以设置该位。 Hovever,它仍然是相同的数字。