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

时间:2013-05-04 08:13:13

标签: java android json type-conversion long-integer

Wrong precision in Long conversion

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

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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