格式化双精度而不舍入

2022-09-03 04:39:16

我需要格式化(而不是舍入)小数点后2位。double

我尝试了:

String s1 = "10.126";
Double f1 = Double.parseDouble(s1);
DecimalFormat df = new DecimalFormat(".00");
System.out.println("f1"+df.format(f1));

结果:

10.13

但我要求输出是10.12


答案 1

调用 setRoundingMode 以适当地设置 RoundingMode

String s1 = "10.126";
Double f1 = Double.parseDouble(s1);
DecimalFormat df = new DecimalFormat(".00");
df.setRoundingMode(RoundingMode.DOWN); // Note this extra step
System.out.println(df.format(f1));

输出

10.12

答案 2

您可以将格式化程序的舍入模式设置为 DOWN

df.setRoundingMode(RoundingMode.DOWN);