1

jquery を使用して、Web サーバーから json データを取得しています。返された Fiddler データを確認すると、すべて正常に見えます。ただし、Chrome/IE/ または Safari でデバッグを開始すると、いくつかの値が変更されていることに気付きます。たとえば、Int64 は次の値でサーバーから送信されます: 10150987224093521. ただし、デバッグすると、1015098722409352* 0 * と表示されます。値は常に 1 ずつ減ります。Fiddler は正しい値 (10150987224093521) を表示しています。ランダムに発生します。その論理的な理由を見つけることができません。なぜこれが起こっているのかについての考えやヒントはありますか?

4

1 に答える 1

2

JavaScript はすべての数値を double float で表します。

http://en.wikipedia.org/wiki/JavaScript_syntax#Number

数値は IEEE-754 Double として 2 進数で表され、有効桁数 16 桁近くの精度が得られます。これらは浮動小数点数であるため、分数を含む実数を常に正確に表すとは限りません。

あなたの番号は 17 桁10 15098 72240 93521なので、精度が低下し始めています。

簡単な JavaScript のデモ: http://jsfiddle.net/EYjjX/

于 2012-07-17T10:05:52.663 に答える