2011-12-26 7 views
0

私はJavaで小数点以下2桁までの倍数をフォーマットしようとしています。私は以下の記事を読んだJavaの小数点以下の桁数を設定する

:何らかの理由で How to round a number to n decimal places in Java

、これらの方法の一つ一つは、私が持っている特定の番号で動作するように失敗した。..

例えば:

DecimalFormat df = new DecimalFormat("#.##"); 
normalizedValue = Double.valueOf(df.format(normalizedValue)); 

normalizedValueを印刷すると、次のような結果になります。

-78.64000000000001 

18.97 

59.469999999999985 

-63.120000000000005 

(注意:一部が正しくフォーマットされている...一部ではない)

ので、これらの方法では、丸めるように見えるが、私は、小数点以下2桁の後に、すべての小数を削除します何か...任意の提案がありますか?

ありがとうございます。

答えて

5

DecimalFormat.format(...)の文字列表記は、実際には2桁しか表示されません。しかし、それを2倍に変換するとすぐに、それらの精度の問題が発生します。 doubleのようなバイナリの基本形式は、 "exakt"小数部分を表現しようとすると、そのような効果を常に表示します。このような影響を取り除くには、BigDecimalに変更することができます。

関連する問題