JavaScript中为负零

Negative zero in JavaScript?

本文关键字:JavaScript      更新时间:2023-09-26

我刚刚注意到我可以在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。

您刚刚遇到有符号的零。

浮点运算的IEEE 754标准(目前大多数支持浮点数的计算机和编程语言都使用)需要+0和−0。带符号零的实数运算可以被认为是扩展实数线的一个变体,使得1/−0=-∞和1/+0=+∞;除法仅对±0/±0和±∞/±∞是不确定的。

Javascript中的所有数字都是浮点的,所以零必须有符号。

我认为这不是问题。至少alert(-0 == 0)返回true。我想如果有一个比特用于符号,如果值是0,也可以设置这个比特。悬停,它保持不变。