org.json.JSONObject.getLong给出了不精确的结果

长转换的精度错误

在android中,我们可以看到附图,我从服务器收到的json是“id = -705156352446547 2446 ”,但代码jsonObject.getLong("id")给出-705156352446547 2512

我可以看到每个getLong转换在最后4位数中有不精确的结果(或丢失精度?)。 我错过了什么吗?

我的设置:java 1.6.0_41,Android 4.1.2,IntelliJ 12 IDE。

Long.parseLong(jsonObject.getString("id"))给出精确的结果。

这表明getLong()的代码正在进行一些可疑的转换,可能是使用double。

基于此问题报告,情况就是如此 。 看起来已在更高版本中修复。

我最近也遇到过这个问题..通过使用代码解决了这个问题:

 Long.valueOf(jarray.getString((index)))