1. 程式人生 > >java app顯示數字格式化以萬、億為單位轉換,如1.7萬

java app顯示數字格式化以萬、億為單位轉換,如1.7萬

/** 
     * <pre> 
     * 數字格式化顯示  
     * 小於萬預設顯示 大於萬以1.7萬方式顯示最大是9999.9萬  
     * 大於億以1.1億方式顯示最大沒有限制都是億單位  
     * make by dongxh 2017年12月28日上午10:05:22 
     * </pre> 
     * @param num 
     *            格式化的數字 
     * @param kBool 
     *            是否格式化千,為true,並且num大於999就顯示999+,小於等於999就正常顯示 
     * @return 
     */  
	 public static String formatNum(String num, Boolean kBool) {  
	        StringBuffer sb = new StringBuffer();  
	        if (!StringUtils.isNumeric(num))  
	            return "0";  
	        if (kBool == null)  
	            kBool = false;  
	  
	        BigDecimal b0 = new BigDecimal("1000");  
	        BigDecimal b1 = new BigDecimal("10000");  
	        BigDecimal b2 = new BigDecimal("100000000");  
	        BigDecimal b3 = new BigDecimal(num);  
	  
	        String formatNumStr = "";  
	        String nuit = "";  
	  
	        // 以千為單位處理  
	        if (kBool) {  
	            if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) {  
	                return "999+";  
	            }  
	            return num;  
	        }  
	  
	        // 以萬為單位處理  
	        if (b3.compareTo(b1) == -1) {  
	            sb.append(b3.toString());  
	        } else if ((b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1)  
	                || b3.compareTo(b2) == -1) {  
	            formatNumStr = b3.divide(b1).toString();  
	            nuit = "萬";  
	        } else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) {  
	            formatNumStr = b3.divide(b2).toString();  
	            nuit = "億";  
	        }  
	        if (!"".equals(formatNumStr)) {  
	            int i = formatNumStr.indexOf(".");  
	            if (i == -1) {  
	                sb.append(formatNumStr).append(nuit);  
	            } else {  
	                i = i + 1;  
	                String v = formatNumStr.substring(i, i + 1);  
	                if (!v.equals("0")) {  
	                    sb.append(formatNumStr.substring(0, i + 1)).append(nuit);  
	                } else {  
	                    sb.append(formatNumStr.substring(0, i - 1)).append(nuit);  
	                }  
	            }  
	        }  
	        if (sb.length() == 0)  
	            return "0";  
	        return sb.toString();
	 }