3

私は奇妙な状況を実行しています。Double parseDouble を使用して数を数えています。状況によっては、たとえば 109.1 の代わりに余分な 0 を取得しています ... 109.10000001 を取得しています。

json から文字列を追加しようとしています。

これが私が実行しているコード行です。

points = points + Double.parseDouble(x.points);
4

3 に答える 3

1

おそらく Double.parseDouble とは無関係ですが、浮動小数点の精度の問題です。float と double は、仮数と指数としてバイナリでエンコードされます。小数点以下の部分は、10 進数で簡単に表現できるものを 2 進数でうまく表現できるとは限らないため、特に問題となります。 ...)。表示のために固定桁数に丸めるか、代わりに java.math.BigDecimal を使用することをお勧めします。

于 2013-05-03T00:04:10.383 に答える