Number.MAX_SAFE_INTEGER 在 32 位计算机中的值为 (2^53 - 1) [重复]

Posted

技术标签:

【中文标题】Number.MAX_SAFE_INTEGER 在 32 位计算机中的值为 (2^53 - 1) [重复]【英文标题】:Is Number.MAX_SAFE_INTEGER has value of (2^53 - 1) in 32-bit computer [duplicate] 【发布时间】:2021-10-28 15:46:55 【问题描述】:

MDN Web Docs 是指Number.MAX_SAFE_INTEGER 常量代表 javascript 中的最大安全整数,其值为 2^53 - 1

我的问题:Number.MAX_SAFE_INTEGER32 位 计算机中也有(2^53 - 1) 的值吗?

如果是,它具有相同的值,JavaScript 如何将这个数字 (2^53 - 1) 存储在 32 位中?!

【问题讨论】:

是的。多字节,多指令 根据语言规范,数字是 64 位双精度浮点值。在 32 位 CPU 上符合标准的 JavaScript 实现必须以某种方式处理这个问题。如何?这取决于实施者。 另外,你为什么在乎?您是否遇到了一些具体问题? 计算机支持双精度浮点已有几十年了,早在 64 位处理器出现之前。它们只是将它们存储在两个 32 位字中。 这会帮助你superuser.com/questions/698312/… 【参考方案1】:

是的。所有 JavaScript Numbers 都使用 IEEE 754 binary64(A.K.A. 双精度浮点)表示。 这种格式占用 64 位空间,但大多数现代 32 位处理器本身就支持它,即使不支持,也可以在软件中实现浮点运算。

32位处理器中的“32位”指的是word大小

【讨论】:

以上是关于Number.MAX_SAFE_INTEGER 在 32 位计算机中的值为 (2^53 - 1) [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ES11常用新语法

ES11常用新语法

超出JavaScript安全整数限制的数字计算-BigInt

es6

js数据精度

es6中新增的常用数值扩展