3

これは単純な問題のはずですが、インターネット上で何も見つかりませんでした。これが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は、これらすべての変数を保持する単なるクラスです。比率の種類は2倍です。

4

2 に答える 2

1

クラス定義に何か奇妙なことがあると思います。Jackson は double 値を切り捨てません。これは、2 進浮動小数点表記に関する通常の警告 (つまり、丸めエラーを回避したい場合は、BigDecimaletc を使用する必要があります) を超えており、このような問題を引き起こすには十分ではありません。

そのため、 の定義を参照すると便利ですtheClass。切り捨てが説明された方法で発生した場合、それは間違いなくバグです。

于 2012-09-10T20:49:56.200 に答える
0

私はJackSonと一緒に仕事をしたことはありませんが、どういうわけかこのようなことを試してみてください。

DecimalFormat df = new DecimalFormat("#.###");
df.format(doubleValue);
于 2012-09-10T02:59:10.510 に答える