【发布时间】:2011-04-06 01:50:25
【问题描述】:
我知道这是一个奇怪的问题,但是 JavaScript 是否有能力使用双精度而不是单浮点数? (64 位浮点数与 32 位。)
【问题讨论】:
标签: javascript floating-point numerical double-precision
我知道这是一个奇怪的问题,但是 JavaScript 是否有能力使用双精度而不是单浮点数? (64 位浮点数与 32 位。)
【问题讨论】:
标签: javascript floating-point numerical double-precision
JavaScript 中的所有数字都是 64 位浮点数。
参考:
http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference
【讨论】:
根据 ECMA-262 规范(ECMAScript 是 Javascript 的规范),第 8.5 节:
Number 类型正好有 18437736874454810627(即 264−253+3)个值,表示双精度 64 位格式 IEEE 754 值为在 IEEE 二进制浮点算术标准中指定
来源:http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (PDF)
【讨论】:
在 javascript 中键入 number 它是支持 IEEE 754 标准的浮点 64 位数字,它类似于 C 中的 double。您可以通过命令创建 32 位类型数组下面通过绑定对应的缓冲区来控制每个组件中的每个字节。
let a = new Float32Array(length);
let b = new Float64Array(length);
但是注意IE9不支持,这里是browser compatibility表。
如果你想要像 long double 这样的扩展精度,可以使用 double.js 或 decimal.js 库。
【讨论】: