4

我有一个 javascript 推特应用程序。如果我在 Firebug 中查看 tweetid,它会返回: 344203233524330497 但是当我在 javascript 中评估它时,它会返回 344203233524330500 (将最后两个数字四舍五入)。

到底是怎么回事?

有任何想法吗?

谢谢!

4

2 回答 2

3

JavaScript 可以在不损失精度的情况下表示的最大整数值是 9007199254740992。

您的数字显然更大,因此 JavaScript 将为此使用浮点数,这缺乏精度。所以在这种情况下,最后两个数字似乎是四舍五入的。

只需使用字符串表示,或者,如果您必须使用实际数值,请参阅一些 BigMath 库。

于 2013-06-10T21:55:32.117 回答
3

在 Javascript 中,整数是 64 位数字。这意味着最大整数是 2 53,即9007199254740992。高于此的数字将不准确:由于内部存储的方式,它们会看到一些“四舍五入”。

您显然正在将此字符串评估为数字。如果要保持准确,则必须避免将其转换为数字并将其保留为字符串。

有关JS 中数字准确性的更多信息,请参阅此答案,

于 2013-06-10T21:56:02.763 回答