13

javaでfloatとdoubleの値を切り捨てたい。

以下は私の要件です: 1. 12.49688f がある場合は、丸めずに 12.49 として出力する必要があります。 12.0 の場合、12 のみとして印刷する必要があります。

条件 3 は常に念頭に置いておく必要があります。切り捨てロジックと並行する必要があります。

4

6 に答える 6

27

これを試してみてください-

DecimalFormat df = new DecimalFormat("##.##");
df.setRoundingMode(RoundingMode.DOWN);
System.out.println(df.format(12.49688f));
System.out.println(df.format(12.456));
System.out.println(df.format(12.0));

ここでは、書式設定に 10 進フォーマッタを使用しています。roundmode は DOWN に設定されているため、小数点以下は自動四捨五入されません。

期待される結果は次のとおりです。

12.49
12.45
12
于 2012-04-26T11:51:19.363 に答える
4
double d = <some-value>;
System.out.println(String.format("%.2f", d - 0.005);
于 2012-08-01T18:46:01.057 に答える
2

で見てくださいDecimalFormat()

DecimalFormat df = new DecimalFormat("#.##");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(dfs);
于 2012-04-26T11:40:12.883 に答える
1

小切手java.math.BigDecimal.round(MathContext).

于 2012-04-26T11:37:28.373 に答える
0

DecimalFormatを使用してみて、 RoundingModeを必要なものに合わせて設定してください。

于 2012-04-26T11:47:01.107 に答える