JavaScript 使用 IEEE 754用于存储数字,对于整数和浮点值,其中 53 位用于表示尾数,11 位用于表示指数。
用带符号的 53 位整数表示的最大值是±9007199254740992,用带符号的 11 位整数表示的最大值是±1024。
但是,JavaScript 中的 Number.MAX_VALUE
是 1.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/