全文我以Double类型举例。 有两类(四种)情况: 1.a>1 2. 0<a<1 3. 待转换的数据,其小数长度大于指定保留的位数(eg:a = 12.235534,保留2位) 4.待转换的数据,其小数长度小于指定保留的位数(eg:a = 12.2,保留2位)
先给出结论: .00:四舍五入保留两位小数。满足2时,整数位不显示 #.00:四舍五入保留两位小数。满足2时,整数位不显示 0.00:四舍五入保留两位小数。不够位数则补0 #.##:四舍五入保留两位小数。不够位数时不处理 %.2f:四舍五入保留两位小数。不够位数则补0 BigDecimal :四舍五入保留两位小数。不够位数时不处理 NumberFormat:四舍五入保留两位小数。不够位数时不处理
1.假设已有待转换数据:==double a = 12.235534 满足条件1、3
double a = 12.235534;
DecimalFormat decimalFormat = new DecimalFormat(".00");
System.out.println(".00:" + decimalFormat.format(a));
DecimalFormat decimalFormat2 = new DecimalFormat("#.00");
System.out.println("#.00:" + decimalFormat2.format(a));
DecimalFormat decimalFormat3 = new DecimalFormat("0.00");
System.out.println("0.00:" + decimalFormat3.format(a));
DecimalFormat decimalFormat4 = new DecimalFormat("#.##");
System.out.println("#.##:" + decimalFormat4.format(a));
System.out.println("%.2f:" + String.format("%.2f", a));
BigDecimal b = new BigDecimal(a);
double d = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("BigDecimal:" + d);
NumberFormat f = NumberFormat.getNumberInstance();
f.setMaximumFractionDigits(2);
System.out.println("NumberFormat:" + f.format(a));
结果如下: 以上数据均四舍五入保留2位小数成功,但是不要太高兴,如果是待转换数据0<a<1的情况呢。
2.假设已有待转换数据:double a = 0.235534 满足条件2、3
同样执行上面7种方式,你就会发现不同 结果如下:
3.假设已有待转换数据:double a = 0.2 满足条件2、4
同样执行上面7种方式,你就会发现不同 结果如下:
4.假设已有待转换数据:double a = 12.2 满足条件1、4
同样执行上面7种方式,你就会发现不同 结果如下:
|