4

私はJavaScriptのTwitterアプリを持っています。Firebug で tweetid を見ると、344203233524330497 が返されますが、javascript で評価すると 344203233524330500 が返されます (最後の 2 つの数字を四捨五入します)。

何が起こっている?

何か案は?

ありがとうございます!

4

2 に答える 2

3

JavaScript が精度を失うことなく表現できる最大の整数値は 9007199254740992 です。

あなたの数値は明らかに大きいので、JavaScript はこれに浮動小数点数を使用しますが、これには精度がありません。したがって、この場合、最後の 2 つの数値が丸められたように見えます。

文字列表現を使用するか、実際の数値を使用する必要がある場合は、いくつかの BigMath ライブラリを参照してください。

于 2013-06-10T21:55:32.117 に答える
3

Javascript では、整数は 64 ビットの数値です。これは、最大の整数が 2 53であることを意味し9007199254740992ます。これよりも大きい数値は正確ではありません。内部に格納される方法の結果として、いくつかの「丸め」が見られます。

この文字列を明らかに数値として評価しています。正確に保ちたい場合は、数値への変換を避け、文字列として保持する必要があります。

JS の数値精度の詳細については、この回答を参照してください。

于 2013-06-10T21:56:02.763 に答える