JavaScript で大きな数値が誤って切り捨てられる
714341252076979033 などの大きな数値が、JSON 文字列から解析されるときに誤って丸められるのはなぜなのかという疑問が生じます。 JSON.parse() を使用します。コンソールに表示される結果の値は、有効数字が削除された切り捨てられた数値として表示されます。
Answer
この現象は、IEEE-754 に基づく JavaScript の数値型が原因で発生します。倍精度浮動小数点では、大きな整数を表現する際に制限があります。倍精度浮動小数点の安全な整数値の最大値は 9,007,199,254,740,991 (Number.MAX_SAFE_INTEGER) です。この点を超えると、浮動小数点表現の精度が低下し、連続する整数が丸められます。
この特定のケースでは、解析される大きな数値が Number.MAX_SAFE_INTEGER を大幅に超えています。したがって、JavaScript で使用される丸めアルゴリズムは、浮動小数点システムの制限内で数値をできるだけ正確に表現するために最下位桁を切り捨てます。
回避策
この問題を回避するには、JavaScript の数値型の容量を超える大きな整数を表すために BigInt を使用することをお勧めします。 BigInt は ES2020 で追加されたデータ型で、任意の長さの整数を扱うことができます。ただし、BigInt は JSON でネイティブにサポートされていないことに注意することが重要です。そのため、大きな整数の表現と解析には代替メソッドを使用する必要があります。
1 つのアプローチは、JSON を解析するときに reviver 関数を使用することです。 reviver 関数は、大きな整数の文字列表現を BigInt オブジェクトに変換し、JavaScript アプリケーション内で正しく処理できるようにします。
以上がJavaScript で JSON.parse() を使用すると大きな数値が切り捨てられるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。