JavaScript 是否具有双浮点数精度?

IT技术 javascript floating-point numerical double-precision
2021-03-04 10:39:39

我知道这是一个奇怪的问题,但是 JavaScript 是否有能力使用双精度而不是单浮点数?(64 位浮点数与 32 位。)

3个回答

根据 ECMA-262 规范(ECMAScript 是 Javascript 的规范),第 8.5 节:

Number 类型正好有 18437736874454810627(即 2 64 −2 53 +3)个值,表示 IEEE 二进制浮点运算标准中指定的双精度 64 位格式 IEEE 754 值

来源:http : //www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (PDF)

这是唯一正确的答案。它引用并引用了 ECMAScript 规范,这是唯一重要的来源。另一个答案只有不确定的来源。
2021-05-19 10:39:39
但按位运算会将其转换为 32 位整数。
2021-04-22 10:39:39

在javascript类型number中,它是支持IEEE 754标准的64位浮点数,就像C中double一样。您可以通过下面的命令创建32位类型化数组,并通过绑定相应的缓冲区来控制每个组件中的每个字节。

let a = new Float32Array(length);
let b = new Float64Array(length);

但请注意,它在 IE9 中不受支持,这里是浏览器兼容性表。

如果你想要像long double这样的扩展精度,你可以使用double.jsdecimal.js库。