Java 从Jackson处读取时双精度丢失
这应该是一个简单的问题,但我只是在互联网上找不到任何东西。 下面是JSON字符串Java 从Jackson处读取时双精度丢失,java,json,jackson,Java,Json,Jackson,这应该是一个简单的问题,但我只是在互联网上找不到任何东西。 下面是JSON字符串 {"ratio":2.714,"daily":161.0,"userId":811032853,"topic":"#GOP2012","gender":"Unknow"} 然后当我执行mapper.readValue(*theString*,*theClass.class*)时,小数点后的所有数字都会丢失。对于上面的例子,我只得到了2.0的比率。 我使用的jackson版本是1.9.9,应该是最新版本。 其他
{"ratio":2.714,"daily":161.0,"userId":811032853,"topic":"#GOP2012","gender":"Unknow"}
然后当我执行mapper.readValue(*theString*,*theClass.class*)
时,小数点后的所有数字都会丢失。对于上面的例子,我只得到了2.0的比率。
我使用的jackson版本是1.9.9,应该是最新版本。
其他人也会这样吗?谢谢大家:)
theClass只是一个包含所有这些变量的类。比率的类型是双重的。我没有和杰克逊一起工作过,但是你能试试这样的方法吗
DecimalFormat df = new DecimalFormat("#.###");
df.format(doubleValue);
我怀疑类定义有点奇怪。Jackson不会截断双精度值,这超出了二进制浮点表示法的常见警告(即,如果您希望避免任何舍入错误,则应使用
BigDecimal
等),这还不足以导致此类问题
因此,查看类的定义将非常有用。如果截短确实按照解释的方式发生,那肯定是一个bug。请向我们展示类的源代码。@StephenC它已经更新了。但课堂上什么都没有。唯一有帮助的是可变比率的类型是双重的。