【问题标题】:org.json.JSONObject.getLong gives imprecise resultorg.json.JSONObject.getLong 给出不精确的结果
【发布时间】:2013-05-04 08:13:12
【问题描述】:

在android中,如附图所示, 我从服务器收到的 json 是“id=-7051563524465472446” 但代码 jsonObject.getLong("id") 给出 -7051563524465472512

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

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

【问题讨论】:

  • 数据库中ID的类型是Long吗?
  • @Daryn // 是的。这可能是个问题吗?它是一个通用的 SpringFramework 支持的 Web 服务。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这表明 getLong() 的代码正在做一些可疑的转换,可能是使用双精度。

    根据this 问题报告,情况似乎如此。看起来已经在以后的版本中修复了。

    【讨论】:

    • 谢谢 - 我遇到了同样的错误并将 json.org 更新到版本 20141113 修复了它。
    【解决方案3】:

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

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

    【讨论】:

    • 事实上......即使是json.org的20140107版本也确实解决了这个问题。
    猜你喜欢
    • 2012-08-27
    • 2017-12-14
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多