JavaScript中NaN的唯一二进制表示的含义

时间:2014-04-23 19:36:52

标签: javascript floating-point nan

我认为JavaScript仅支持NaN的一个二进制表示的原因是,它允许解释器通过将该特定位模式检查为64位整数而不是依赖于FPU来加速涉及NaN的操作处理它们?

1 个答案:

答案 0 :(得分:0)

斯蒂芬·佳能的评论促使我进行了一些时间测试,我想我们应该首先完成这些测试。我发布结果作为答案,以防其他人感兴趣...

使用我的Intel Core2 Quad CPU(2.33GHz)PC进行了比较

for(i=0;i<100000000;++i) x += 1.0;

在C ++和JavaScript中,x首先等于0.0,然后再到NaN

C++ x==0.0:   124ms
C++ x==NaN: 11888ms

JS  x==0.0:   268ms
JS  x==NaN:   432ms

因此,似乎JavaScript 利用了它已经必须动态调度算术运算符以将NaN视为特殊情况的事实。
我猜测它是一个没有数据的隐藏类型,因此NaN只有一个二进制表示。