5

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

714341252076979033

...变成:

714341252076979100

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

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

4

2 回答 2

9

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

我没有办法解决这个问题。

于 2011-04-02T20:54:56.140 回答
0

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

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

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

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

于 2011-04-02T21:53:10.470 回答