私はJavaScriptのTwitterアプリを持っています。Firebug で tweetid を見ると、344203233524330497 が返されますが、javascript で評価すると 344203233524330500 が返されます (最後の 2 つの数字を四捨五入します)。
何が起こっている?
何か案は?
ありがとうございます!
私はJavaScriptのTwitterアプリを持っています。Firebug で tweetid を見ると、344203233524330497 が返されますが、javascript で評価すると 344203233524330500 が返されます (最後の 2 つの数字を四捨五入します)。
何が起こっている?
何か案は?
ありがとうございます!
JavaScript が精度を失うことなく表現できる最大の整数値は 9007199254740992 です。
あなたの数値は明らかに大きいので、JavaScript はこれに浮動小数点数を使用しますが、これには精度がありません。したがって、この場合、最後の 2 つの数値が丸められたように見えます。
文字列表現を使用するか、実際の数値を使用する必要がある場合は、いくつかの BigMath ライブラリを参照してください。
Javascript では、整数は 64 ビットの数値です。これは、最大の整数が 2 53であることを意味し9007199254740992
ます。これよりも大きい数値は正確ではありません。内部に格納される方法の結果として、いくつかの「丸め」が見られます。
この文字列を明らかに数値として評価しています。正確に保ちたい場合は、数値への変換を避け、文字列として保持する必要があります。
JS の数値精度の詳細については、この回答を参照してください。