javascript - 为什么 Number.MAX_VALUE 是 1.7976931348623157e+308 而不是 9007199254740992e+1024?

标签 javascript ieee-754

JavaScript 使用 IEEE 754用于存储数字,对于整数和浮点值,其中 53 位用于表示尾数,11 位用于表示指数。

用带符号的 53 位整数表示的最大值是±9007199254740992,用带符号的 11 位整数表示的最大值是±1024。

但是,JavaScript 中的 Number.MAX_VALUE1.7976931348623157e+308。为什么不是9007199254740992e+1024,可以用64位来表示,而且是更大的值?

最佳答案

AeB 语法镜像 scientific notation因此意味着 A * 10^B,而不是 A * 2^B。最大的 binary64 值是 9007199254740992 * 2^1024(或类似的东西),而不是 9007199254740992 * 10^1024。您建议的 9007199254740992e+1024 表示后者并且 (10^1024 ~= 2^3402),因此它实际上不适合 64 位二进制 float (试试吧!)。

关于javascript - 为什么 Number.MAX_VALUE 是 1.7976931348623157e+308 而不是 9007199254740992e+1024?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22402885/

相关文章:

javascript - 从 JS 模块内的 HTML 访问函数

javascript - 为什么 input[type ="number"] 将十进制值插入为 ".00"?

python - 通过 UART float 到嵌入式 c float

Java float to double - 上限和下限?

c++ - 符合 IEEE-754 标准的四舍五入

javascript - 在javascript中的float <-> int之间转换

javascript - 解压文件 node.js 时出现意外的文件结束错误

javascript - jQuery 动态内容的点击不起作用

javascript - 在不可变 Map 中设置而不覆盖先前的值

c - frexp(FLT_MAX, ...) 应该返回什么?