java数字位数不足在前后补0

知兮丶青
阅读(6098) 2018-01-31
java数字位数不足在前后补0
java数字位数不足在前后补0

java整数或数字字符串位数不足前面或后面补零的方法,一般都是使用自定义简单封装、String.format、NumberFormat等都可以实现。



自定义简单封装

/**
 * 数字不足位数前后补0
 * @param num 参与补零的数字
 * @param len 最终位数长度
 * @param prev 前或后,true前,false后
 * @return
 */
public static String zeroFormat(Integer num, int len, boolean prev) {
    int l = num.toString().length();
    StringBuffer sb = new StringBuffer();
    if(!prev)
        sb.append(num);//后补
    for(int i=0;i<len-l;i++)
        sb.append("0");
    if(prev)
        sb.append(num);//前补
    return sb.toString();
}
//前补0
String str1 = zeroFormat(12, 5, true);
System.out.println(str1);//00012

//后补0
String str2 = zeroFormat(12, 5, false);
System.out.println(str2);//12000


使用String.format

//前补零
String str1 = String.format("%05d", 12);
System.out.println(str1);//00012

//后补零
String num = "12";
int len = 5;
String str2 = num + String.format("%0"+(len - num.length())+"d", 0);
System.out.println(str2);//12000


使用Number、DecimalFormat

支持小数、负数、货币、百分比等等各种操作

//前补零
String str1 = new DecimalFormat("00000").format(12);
System.out.println(str1);//00012
String str2 = new DecimalFormat("00000.000").format(12.12);
System.out.println(str2);//00012.120

NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setGroupingUsed(false);//不分组
formatter.setMinimumIntegerDigits(5);//整数部分中所允许的最小数字位数
//formatter.setMinimumFractionDigits(3);//小数部分中所允许的最小数字位数
String str3 = formatter.format(12);
System.out.println(str3);//00012


//后面补零
Integer num = 12;
int len = 5;
int l = len - num.toString().length();

DecimalFormat df = new DecimalFormat();
df.setGroupingUsed(false);
df.setMinimumIntegerDigits(len);
if(l>0)
    df.setMultiplier((int)Math.pow(10,l));
System.out.println(df.format(num));//12000




原创文章,转载请注明出处:https://www.weizhixi.com/article/69.html