Javascript将所有数字表示为双精度浮点数。这意味着它在处理64位Java Long数据类型的最高端的数字时会丢失精度 - 17位数后的任何数据。例如,数字:
714341252076979033
...变成:
714341252076979100
我的数据库使用长ID,有些恰好位于危险区域。我可以更改数据库中的违规值,但在我的应用程序中这很难。相反,现在我非常费力地确保服务器在所有ajax响应中将Long ID编码为字符串。
但是,我更喜欢在Javascript中处理这个问题。我的问题:是否存在强制JSON解析将数字视为字符串的最佳实践?
答案 0 :(得分:9)
您必须将您的值作为字符串发送(即用引号括起来),以确保Javascript将它们视为字符串而不是数字。
我无法解决这个问题。
答案 1 :(得分:0)
JavaScript将所有数字表示为64b IEEE 754浮点数。
如果你的整数不能适合52位,那么它将被截断,这就是这里发生的事情。
如果确实需要更改数据库,请将其更改为发送52位整数。或53位有符号整数。
否则,将它们作为字符串发送。