"。"文字の後に正確に2桁の文字列を入力するには、私は、このような828.054999999702d
として番号を持っている場合は、次の数字は「4」と言うので、それは、これまでに正しいものを828.05にそれをフォーマットすると、それは何もそれを切り捨てます2桁の数字を印刷しますが、6桁の精度で丸めます。
DecimalFormat df = (DecimalFormat)DecimalFormat.getInstance(Locale.US);
df.applyPattern("0.00");
df.setRoundingMode(RoundingMode.HALF_UP);
String output = df.format(value);
:私のような何かを行うことができます。
しかし、数字の精度を維持する必要がある場合は、表示したくない場合はどうすればよいですか?
私がすぐに作成すると、この作業コードです:これは6日、第5回、第4回、第3回次いで第2位を四捨五入します
double prettyValue = value;
prettyValue = Math.round(prettyValue * 1000000d)/1000000d;
prettyValue = Math.round(prettyValue * 100000d)/100000d;
prettyValue = Math.round(prettyValue * 10000d)/10000d;
prettyValue = Math.round(prettyValue * 1000d)/1000d;
prettyValue = Math.round(prettyValue * 100d)/100d;
DecimalFormat df = (DecimalFormat)DecimalFormat.getInstance(Locale.US);
df.applyPattern("0.00");
df.setRoundingMode(RoundingMode.HALF_UP);
String output = df.format(prettyValue);
、のNumberFormatは何もする必要がありますが、単に2が残っている印刷されませんそれ以降はゼロになります。
しかし、私はすでに見ていないすぐに使える丸めがあるはずです。 BigDecimalsで同じことをしようとすると、まったく同じ問題になります。
私が望む結果は828.054999999702
を828.06
に丸めることです。
出力をフォーマットするときに切り捨ててみてください。 – Thomas
* "何桁の精度を保持する必要がある場合、それを表示したくないのですか?"という意味ですか?ディスプレイの書式設定は精度の保持と何が関係していますか?あなたの書式設定されたテキストが保存されている場合は、保存に必要なすべての数字を表示する必要があります。それ以外の場合は値が保持されますが、問題は何ですか?よくわかりません。 – Andreas