为什么JavaScript使用基数为10的浮点数(根据w3schools)?

时间:2013-01-26 18:56:10

标签: javascript

我读了这个on W3Schools

  

JavaScript中的所有数字都存储为64位(8字节)基数10,   浮点数。

这听起来很奇怪。现在,它要么错了要么应该有充分的理由不使用像IEEE标准那样的基础2。

我试图找到一个真正的JavaScript定义,但我找不到任何。无论是在V8还是WebKit文档中,我在维基百科上找到的两个JavaScript实现对我来说是最熟悉的,我可以找到他们如何存储JavaScript数字类型。

那么,JavaScript使用基数10吗?如果是这样,为什么?我能想出的唯一原因是,当你想要能够准确存储整数和浮点数时,使用base 10可能有一个优势,但我不知道如何使用base 10将有一个优势自己。

3 个答案:

答案 0 :(得分:7)

那不是World Wide Web Consortium (W3C),那是w3schools,一个对任何网络标准都没有任何权威的网站。

Javascript中的数字是符合IEEE标准的双精度浮点数。

网站得到的部分关于每个数字都是64位浮点数。基数10与数值表示没有任何关系,这可能来自浮点数始终使用基数10进行解析和格式化的事实。

答案 1 :(得分:5)

根据ECMA-262标准(ECMAScript 5.1)section 4.3.19

JavaScript中的数字:

  

对应于双精度64位二进制格式 IEEE 754 值的原始值。

因此,使用基数10浮点数的任何实现都不符合ECMA-262。

答案 2 :(得分:4)

与大多数现代语言一样,JavaScript使用IEEE754。这根本不存储在基数10中。

JavaScript的特殊性在于只有一种数字类型,即双精度浮点数。如果你想处理整数,那么副作用就是你在某种程度上与其他语言相比有限:你不能存储任何双精度整数,只能存储那些符合分数大小(52位)的整数。