| 全文我以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、3double 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种方式,你就会发现不同结果如下:
 
  |