java数字位数不足在前后补0
阅读(6098)
2018-01-31
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