15

長い数値 (Java サーブレットで生成されたもの) を含む json を解析する必要があります。問題は、長い数値が丸められることです。

このコードが実行されると:

var s = '{"x":6855337641038665531}';
var obj = JSON.parse(s);
alert (obj.x);

出力は次のとおりです。

6855337641038666000

ここで例を参照してください: http://jsfiddle.net/huqUh/

それはなぜですか、どうすれば解決できますか?

4

4 に答える 4

10

他の人が述べたように、これは数が多すぎるためです。ただし、次のように数値を文字列として送信することで、この制限を回避できます。

var s = '{"x":"6855337641038665531"}';

次に、JSON.parse() を使用する代わりに、javascript-bignumなどのライブラリを使用して数値を操作できます。

于 2013-03-28T19:08:40.317 に答える
8

大きすぎる数字です。JavaScript は数値に倍精度浮動小数点数を使用し、約 15 桁の精度 (基数 10) を持ちます。JavaScript が確実に保存できる最大の整数は 2 51のようなものです。

解決策は、妥当な数を使用することです。このような大きな数を処理する実際の方法はありません。

于 2013-03-28T18:45:29.373 に答える
5

JavaScript が精度を落とさずに処理できる最大数は です9007199254740992

于 2013-03-28T18:46:11.627 に答える