java中格式化数字0和#区别


public static void main(String[] args) {
//0第一种情况实际数字位数被占位符位数多的时候
//整数部分不动,小数部分四舍五入
String str="42.1521";
System.out.println(new DecimalFormat("0.0").format(new BigDecimal(str)));//42.2
System.out.println(new DecimalFormat("0.000").format(new BigDecimal(str)));//42.152
//0第二种情况实际数字位数比占位数少的的时候,整数部分和小数部分都会用0来替代
System.out.println("--------------------------------");
String str1="4.15";
System.out.println(new DecimalFormat("0000.0000").format(new BigDecimal(str1)));//0004.1500
System.out.println(new DecimalFormat("00.00").format(new BigDecimal(str1)));//04.15
//# 第一种情况,实际数字比占位符数字多的时候
//整数部分不动,小数部分四舍五入
System.out.println("--------------------------------");
String str2="4.15210";
System.out.println(new DecimalFormat("#.#").format(new BigDecimal(str2)));//4.2
System.out.println(new DecimalFormat("#.###").format(new BigDecimal(str2)));//4.152
System.out.println(new DecimalFormat("##.#####").format(new BigDecimal(str2)));//4.1521
//#第二种情况,实际数字位数比占位符数字少的时候
//整数部分和小数部分都不动(小数后面的0会抹去)
System.out.println("--------------------------------");
String str3="4.10";
System.out.println(new DecimalFormat("#.#").format(new BigDecimal(str3)));//4.1
System.out.println(new DecimalFormat("#.###").format(new BigDecimal(str3)));//4.1
System.out.println(new DecimalFormat("##.#####").format(new BigDecimal(str3)));//4.1
//总结一下其实当实际数字位数大于占位符的位数,0和#都会将小数部分四舍五入,
//当实际数字位数小于占位符位数时,#是不会补充位数的,0会将少的位数补上,并且#会将后面的0去掉
}

posted @ 2019-12-28 20:15  张小振的博客  阅读(1671)  评论(0编辑  收藏  举报