1. ホーム
  2. javascript

[解決済み] JavaScriptは64ビット整数をサポートしていますか?

2023-03-19 09:20:24

質問

次のようなコードがあります。

var str = "0x4000000000000000";   //4611686018427387904 decimal
var val = parseInt(str);
alert(val);

私はこの値を取得します: " 4611686018427388000 "ですが、これは 0x4000000000000060

JavaScript が 64 ビット整数を誤って処理しているのか、それとも私が何か間違ったことをしているのか、気になります。

どうすれば解決するのでしょうか?

JavaScriptでは、数字を IEEE-754 倍精度 (64 ビット) 形式で数値を表します。私の理解では、これは53ビットの精度、つまり10進数で15桁から16桁の数字を与えます。この数値はJavaScriptが対応できる桁数よりも多いので、結局は近似値になってしまいます。

これは実際には誤処理ではありませんが、大きな数で完全な精度が必要な場合には、明らかにあまり役に立ちません。より大きな数を扱える JS ライブラリはいくつかあります。 ビッグナンバー Int64 .