读杰克逊的时候失去了双倍精度



这应该是一个简单的问题,但我在互联网上找不到任何东西。这是JSON字符串

  {"ratio":2.714,"daily":161.0,"userId":811032853,"topic":"#GOP2012","gender":"Unknow"}

然后当我做mapper.readValue(*theString*,*theClass.class*)时,小数点后的所有数字都会丢失。对于上面的例子,我只得到2.0的比值。

我使用的杰克逊的版本是1.9.9,这应该是最新的版本。

这种情况也发生在其他人身上吗?谢谢大家:)

只是一个包含所有这些变量的类。比率的类型是双倍的。

我怀疑类定义有些奇怪。Jackson不会截断双值,除了二进制浮点符号的常见注意事项(即,如果您想避免任何舍入错误,则应使用BigDecimal等)之外,这些注意事项不足以导致此类问题。

因此,了解theClass的定义将是有用的。如果截断确实以解释的方式发生,那肯定是一个错误。

我没有和JackSon合作过,但你能试一下吗。。。。

DecimalFormat df = new DecimalFormat("#.###");
df.format(doubleValue);

最新更新