ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript JSON 解析で大きな数値が誤って丸められるのはなぜですか?

JavaScript JSON 解析で大きな数値が誤って丸められるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 15:27:10364ブラウズ

Why Are Large Numbers Rounded Incorrectly in JavaScript JSON Parsing?

JavaScript で大きな数値が誤って丸められる

JSON.parse を使用して解析すると、JSON 文字列内の大きな数値が JavaScript で誤って丸められる場合があります。この問題は、IEEE-754 倍精度バイナリ浮動小数点形式仕様で説明されているように、JavaScript の数値型の容量が制限されているために発生します。

JavaScript は、最大約 9007199254740991 (Number.MAX_SAFE_INTEGER) までの数値を正確に表現できます。 。この値を超えると、形式の精度が失われ、数値は表現可能な最も近い値に丸められる場合があります。

たとえば、次のコードはこの動作を示しています。

const jsonString = '{"id":714341252076979033,"type":"FUZZY"}';
const jsonParsed = JSON.parse(jsonString);
console.log(jsonString, jsonParsed);

実行すると、値はjsonParsed.id の値が誤って 714341252076979100 に丸められます。これは、元の値が714341252076979033 は、安全な整数の範囲外です。

この問題を回避するには、大きな数値には数値の代わりに文字列表現を使用することを検討してください。あるいは、ES2020 では、任意の大きな整数をサポートする BigInt データ型を使用できます。ただし、BigInt 値は JSON にネイティブにシリアル化できないため、カスタム シリアライザー/デシリアライザーを使用する必要があることに注意してください。

以上がJavaScript JSON 解析で大きな数値が誤って丸められるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。