1. ホーム
  2. javascript

[解決済み] Number.MAX_VALUE が 9007199254740992e+1024 ではなく 1.7976931348623157e+308 になっているのはなぜですか?

2022-02-27 05:55:05

質問

JavaScriptは IEEE 754 53ビットが仮数、11ビットが指数を表し、整数値、浮動小数点数ともに数値の保存に使用されます。

53ビットの符号付き整数で表現できる最大値は±9007199254740992、11ビットの符号付き整数で表現できる最大値は±1024となります。

しかし Number.MAX_VALUE は、JavaScriptでは 1.7976931348623157e+308 . なぜ 9007199254740992e+1024 これは64ビットで表現でき、より大きな値である。

どのように解決するのですか?

その AeB の構文がミラーリングされます。 科学的記数法 という意味です。 A * 10^B ではなく A * 2^B . binary64 の最大値は 9007199254740992 です *。 2 9007199254740992 ではなく、^1024 (またはそのようなもの) *。 10 ^1024. あなたの提案した 9007199254740992e+1024 は後者を意味し 大いに 10^1024 ~= 2^3402) と大きいので、実際には64ビットのバイナリフロートには収まりません(試してみてください!)。