1

JSON データを返す RESTFUL Web サービスを呼び出しています。応答には数値 (引用符なし) 10000000000223169 が含まれていますが、この応答に対して JavaScript オブジェクトを取得した後、10000000000223168 を取得します。

ブラウザに直接表示される JSON 応答にも 10000000000223168 が表示されますが、コンテンツ タブの FireBug HTTP 応答には正しい値、つまり 10000000000223169 が表示されます。

4

2 に答える 2

2

10000000000223169 は、JavaScript (したがって JSON) で正確な整数として表現できる範囲を超えています。これはおおよそ2 ^ 53.151であり、IEEE 754 では、倍精度浮動小数点数の仮数部で 53 ビットの分解能しか許可されていません。

変更せずに転送するには、文字列として送信する必要があります。

このコードを使用しているクライアントでは、文字列または 64 ビット整数として格納する必要もあります (このようなデータ型の言語を使用している場合)。

IEEE 754 float (JS のデフォルトの数値型) に格納しようとすると、数学演算を実行しようとするとすぐに 53 ビットの精度に丸められます。

于 2013-04-12T13:28:13.997 に答える