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

Posted 张小振的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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去掉
}

以上是关于java中格式化数字0和#区别的主要内容,如果未能解决你的问题,请参考以下文章

java--数字格式化

java 有千位分隔逗号的数字格式化输出 数字前补0输出

Java数字格式化输出时前面补0

Java数字处理类

如何在 Java 中格式化数字?

Java 数字格式