代码之家  ›  专栏  ›  技术社区  ›  talles

JavaScript中为负零?[副本]

  •  6
  • talles  · 技术社区  · 9 年前

    我刚刚注意到,我可以在JavaScript中执行以下操作:

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

    为什么一元否定对零有效?

    这是众多JavaScript怪癖中的一个,还是它(不知怎么)有目的?


    附笔。:

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

    2 回复  |  直到 9 年前
        1
  •  11
  •   Chris Heald    9 年前

    您刚刚遇到 signed zero .

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

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

        2
  •  0
  •   bweber    9 年前

    我认为这不是问题。至少 alert(-0 == 0) 回报 true 。我想,如果有一个位用于符号,如果值为 0 。悬停时,它保持不变。