在Ajax中处理非常大的长数的最佳方法是什么?

时间:2011-04-02 20:50:32

标签: javascript ajax largenumber

Javascript将所有数字表示为双精度浮点数。这意味着它在处理64位Java Long数据类型的最高端的数字时会丢失精度 - 17位数后的任何数据。例如,数字:

714341252076979033

...变成:

714341252076979100

我的数据库使用长ID,有些恰好位于危险区域。我可以更改数据库中的违规值,但在我的应用程序中这很难。相反,现在我非常费力地确保服务器在所有ajax响应中将Long ID编码为字符串。

但是,我更喜欢在Javascript中处理这个问题。我的问题:是否存在强制JSON解析将数字视为字符串的最佳实践?

2 个答案:

答案 0 :(得分:9)

您必须将您的值作为字符串发送(即用引号括起来),以确保Javascript将它们视为字符串而不是数字。

我无法解决这个问题。

答案 1 :(得分:0)

JavaScript将所有数字表示为64b IEEE 754浮点数。

如果你的整数不能适合52位,那么它将被截断,这就是这里发生的事情。

如果确实需要更改数据库,请将其更改为发送52位整数。或53位有符号整数。

否则,将它们作为字符串发送。