import java.text.DecimalFormat;

public class DecimalFormatTest
{
	public static void main(String[]args){
		
		DecimalFormat df1,df2;
		
		System.out.println("整数部分0/#的区别");
		
		df1 = new DecimalFormat("#.00");
		df2 = new DecimalFormat("0.00");
		
		System.out.println(df1.format(0.1)); // .10
		System.out.println(df2.format(0.1)); // 0.10  
		
		System.out.println("小数部分0/#的区别");
		
		df1 = new DecimalFormat("0.00");
		df2 = new DecimalFormat("0.##");
		
		System.out.println(df1.format(0.1)); // 0.10
		System.out.println(df2.format(0.1)); // 0.1
		
		System.out.println(df1.format(0.006)); // 0.01
		System.out.println(df2.format(0.006)); // 0.01
		
		System.out.println("3、整数部分有多位");
		
		df1 = new DecimalFormat("0.00");
		df2 = new DecimalFormat("#.00");
		
		System.out.println(df1.format(2)); // 2.00
		System.out.println(df2.format(2)); // 2.00
		
		System.out.println(df1.format(20)); // 20.00
		System.out.println(df2.format(20)); // 20.00
		
		System.out.println(df1.format(200)); // 200.00
		System.out.println(df2.format(200)); // 200.00
		
		
	}
}

结论:

1、小数部分 #代表最多有几位,0代表必须有且只能有几位

.00 表示最终结果得有两位小数 没有 我给你加上 多了 就四舍五入第三个小数

.## 标示最终结果最多有两位小数 一位或者没有都可以 多了同样四舍五入第三位

2、整数部分 0 和 # 

当整数部分为0时 比如 0.1

# 此时认为整数部分不存在,所以不写 

0 认为没有至少也得一位,写上0  

这跟上面第一部分的表现是一致的:# 有就写,没有就不写 ;0 必须有 没有补0

3、整数部分有多位时: 2 20 200

由上面的结果可以看出 0和#对整数部分多位时的处理是一致的 就是有几位写多少位

这跟上面两部分的表现是不一致的 在有多位时,0和#都没有匹配位数,而是有多少写多少


记住结果好了 也容易记 

常用的估计也就 0.00 或者 0.## 知道这两点差别估计也