Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Jackson处读取时双精度丢失_Java_Json_Jackson - Fatal编程技术网

Java 从Jackson处读取时双精度丢失

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,应该是最新版本。 其他

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

  {"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它已经更新了。但课堂上什么都没有。唯一有帮助的是可变比率的类型是双重的。