gpt4 book ai didi

javascript - Javascript 对 64 位浮点的 native 支持

转载 作者:行者123 更新时间:2023-12-03 02:50:44 25 4
gpt4 key购买 nike

如问题here声明,即使是最新的 Ecmascript 8 也不支持 64 位整数。

但是stage 3 proposal for bigInt 看起来很有前途,我预计它将很快被添加到 Js 规范中。

但是,即使根据提案,我们也必须使用特殊的构造函数来声明大数。 (问题1)无法以一般方式表示大数字背后的技术原因是什么?

let bigNum = 2 ** 64 // Why can't JS do this without losing precision? (at least in future)

我知道 JavaScript 使用 IEEE-754 double (64 位)浮点表示所有数字,这会导致问题。

(Q2)为什么 Javascript 不能使用一些其他标准来表示所有数字,而不会丢失精度?

(Q3)如果 Javascript 真的这样做,会出现什么复杂情况?

编辑:正如T.J所说,我们可以使用后缀代替构造函数,但我仍然觉得这不完全是通用表示法

最佳答案

(Q1) What is the technical reason behind, being unable to represent big numbers in the general way?

破坏网络。 JavaScript 数字的基本原理在最初定义 20 多年后现在无法改变。还有性能问题:由于内置于 CPU 和数学协处理器中,JavaScript 的当前数字(IEEE-754 二进制双 [64 位] 精度)是非常快浮点。这种速度的代价是精度;任意精度(或显着更大的精确范围)的代价是性能。

将来的某一天,也许 JavaScript 将获得 IEEE-754 64 位甚至 128 位十进制 float (参见 herehere ),如果这些格式(引入) 2008年)扩散到生态系统并获得硬件支持。但这只是我的猜测。 :-)

(Q2) Why can't Javascript represent all numbers using some other standard which doesn't lose precision?

参见问题 1。 :-)

(Q3) What complications would arise if Javascript actually did that?

参见问题 1。 :-)

Even according to the proposal, we have to use a special constructor for declaring big numbers.

如果您特别想要 64 位。如果您只需要 BigInts,该提案包含一个新的表示法,即 n 后缀,为此:2n 是 BigInt 2。因此,对于 BigInts,您的示例将是

let bigNum = 2n ** 64n;

关于javascript - Javascript 对 64 位浮点的 native 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com