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位二进制浮点数(尝试一下!)。