5

我在 W3Schools 上读到这个:

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

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

我试图找到一个真正的 JavaScript 定义,但我找不到。在 V8 或 WebKit 文档中,我可以在 Wikipedia 上找到我最熟悉的两个 JavaScript 实现,我可以找到它们如何存储 JavaScript Number 类型。

那么,JavaScript 使用 base 10 吗?如果是这样,为什么?我能想出的唯一原因是,当您希望能够准确地存储整数和浮点数时,使用 base 10 可能会有优势,但我不知道使用 base 10 会有什么优势我。

4

3 回答 3

7

这不是万维网联盟 (W3C),而是 w3schools,一个对任何网络标准都没有任何权威的网站。

Javascript 中的数字是双精度浮点数,遵循 IEEE 标准。

该网站得到了关于每个数字都是 64 位浮点数的部分。以 10 为底与数字表示无关,这可能是因为浮点数总是使用以 10 为底的解析和格式化。

于 2013-01-26T19:00:49.940 回答
5

根据 ECMA-262 标准 (ECMAScript 5.1)第 4.3.19 节,JavaScript 中的数字是:

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

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

于 2013-01-26T19:07:47.583 回答
4

与大多数现代语言一样,JavaScript 使用IEEE754。它根本不存储在以 10 为基数的情况下。

JavaScript 的特殊性在于只有一种数字类型,即双精度浮点数。如果您想处理整数,则与其他语言相反,它的副作用是有些限制:您不能存储任何双精度整数,只能存储适合分数大小(52位)的整数。

于 2013-01-26T18:59:51.297 回答