JavaScriptで大きな数値の丸め誤まってしまう
2023-09-24 17:08:19
質問
このコードを見てください。
var jsonString = '{"id":714341252076979033,"type":"FUZZY"}';
var jsonParsed = JSON.parse(jsonString);
console.log(jsonString, jsonParsed);
Firefox 3.5でコンソールを表示したところ
jsonParsed
は丸められた数字になります。
Object id=714341252076979100 type=FUZZY
異なる値を試してみましたが、同じ結果でした(数値は丸められます)。
また、その丸めのルールもよくわかりません。714341252076979136 は 714341252076979200 に丸められ、一方、714341252076979135 は 714341252076979100 に丸められます。
なぜこのようなことが起こるのでしょうか。
どのように解決するのですか?
ここで見ているものは、実際には2つの丸めの効果です。 ECMAScript の数値は、内部的には倍精度浮動小数点で表現されます。 このとき
id
に設定されると
714341252076979033
(
0x9e9d9958274c359
である)、実際には最も近い表現可能な倍精度値が割り当てられ、それは
714341252076979072
(
0x9e9d9958274c380
). この値をプリントアウトすると、有効数字15桁に丸められ、その結果
14341252076979100
.
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】JavaScriptで10進数を検証する - IsNumeric()
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行