1、整数相除保留小数
@Test
public void test0() {
int a = 9;
int b = 7;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format((float) a / b));
System.out.println(df.format(a / (float) b));
System.out.println(df.format((float) a / (float) b));
System.out.println(df.format((float) (a / b)));
}
结果:
1.29
1.29
1.29
1.00
2、保留两位小数
2.1 方法1:
@Test
public void test1() {
int a = 123;
int b = 7;
double f1 = new BigDecimal((float) a / b).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("ddd===" + f1);
DecimalFormat df = new DecimalFormat("0.00");// 格式化小数
String num = df.format((float) a / b);// 返回的是String类型
System.out.println("ddd===" + num);
}
结果1:
ddd===17.57
ddd===17.57
2.2 方法2
@Test
public void test2() {
// 使用#.##格式时,如果小数点后小于两位,则会原样输出,大于两位时则保留两位小数;使用#.00时,不管小数点后几位,都会保留两位小数。
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(1.50));
System.out.println(df.format(0.30));
System.out.println(new DecimalFormat("#.00").format(1.2));
System.out.println(new DecimalFormat("#.00").format(0.3));
}
结果2:
1.5
0.3
1.20
.30
2.3 方法3
@Test
public void test3() {
double f = 111231.5585;
System.out.println(String.format("%.2f", f));
}
结果3:
111231.56
2.4 方法4
@Test
public void test4() {
double f = 111231.5585;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(f));
}
结果4:
111,231.56
总结:
在不考虑效率的情况下,方法3比较简洁,使用DecimalFormat或NumberFormat实现多样化需求。