我有一个 javascript 推特应用程序。如果我在 Firebug 中查看 tweetid,它会返回: 344203233524330497 但是当我在 javascript 中评估它时,它会返回 344203233524330500 (将最后两个数字四舍五入)。
到底是怎么回事?
有任何想法吗?
谢谢!
我有一个 javascript 推特应用程序。如果我在 Firebug 中查看 tweetid,它会返回: 344203233524330497 但是当我在 javascript 中评估它时,它会返回 344203233524330500 (将最后两个数字四舍五入)。
到底是怎么回事?
有任何想法吗?
谢谢!
JavaScript 可以在不损失精度的情况下表示的最大整数值是 9007199254740992。
您的数字显然更大,因此 JavaScript 将为此使用浮点数,这缺乏精度。所以在这种情况下,最后两个数字似乎是四舍五入的。
只需使用字符串表示,或者,如果您必须使用实际数值,请参阅一些 BigMath 库。
在 Javascript 中,整数是 64 位数字。这意味着最大整数是 2 53,即9007199254740992
。高于此的数字将不准确:由于内部存储的方式,它们会看到一些“四舍五入”。
您显然正在将此字符串评估为数字。如果要保持准确,则必须避免将其转换为数字并将其保留为字符串。
有关JS 中数字准确性的更多信息,请参阅此答案,