5

Javascriptは、すべての数値を倍精度浮動小数点として表します。これは、64ビットのJava Longデータ型の最上位(17桁以降)の数値を処理するときに精度が低下することを意味します。たとえば、番号:

714341252076979033

...になります:

714341252076979100

私のデータベースは長いIDを使用しており、一部は危険ゾーンにあります。データベース内の問題のある値を変更することはできますが、それは私のアプリケーションでは難しいでしょう。代わりに、今のところ、サーバーがすべてのajax応答で長いIDを文字列としてエンコードすることをかなり骨の折れる方法で確認しています。

ただし、これはJavascriptで処理したいと思います。私の質問:数値を文字列として扱うようにJSON解析を強制するためのベストプラクティスはありますか?

4

2 に答える 2

9

Javascriptが値を数値ではなく文字列として処理するようにするには、値を文字列として(つまり、引用符で囲んで)送信する必要があります。

それを回避する方法はありません。

于 2011-04-02T20:54:56.140 に答える
0

JavaScriptは、すべての数値を64bIEEE754フロートとして表します。

整数が52ビットに収まらない場合は、ここで発生したように切り捨てられます。

データベースを変更する必要がある場合は、52ビット整数を送信するようにデータベースを変更してください。または53ビットの符号付き整数。

それ以外の場合は、文字列として送信します。

于 2011-04-02T21:53:10.470 に答える