格式化双精度而不是四舍五入

SMA*_*AVA 12 java floating-point double

我需要格式化(而不是舍入)a double到2位小数.

我尝试过:

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

结果:

10.13
Run Code Online (Sandbox Code Playgroud)

但我要求输出 10.12

Boh*_*ian 20

呼叫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));
Run Code Online (Sandbox Code Playgroud)

产量

10.12
Run Code Online (Sandbox Code Playgroud)


MBy*_*ByD 8

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

df.setRoundingMode(RoundingMode.DOWN);
Run Code Online (Sandbox Code Playgroud)


Joh*_*n B 0

您尝试过RoundingMode.FLOOR吗?

String s1 = "10.126";
Double f1 = Double.parseDouble(s1);
DecimalFormat df = new DecimalFormat(".00");
df.setRoundingMode(RoundingMode.FLOOR);

System.out.println("f1"+df.format(f1));
Run Code Online (Sandbox Code Playgroud)