import java.text.DecimalFormat; public class NumberUtil { /** * 0與#的區別 * 0的話如果有值顯示,沒有值顯示0 * #的話如果有值顯示,沒有值不顯示 */ public static DecimalFormat FORMAT_COMMA_STYLE = new DecimalFormat(",##0.00"); public static DecimalFormat FORMAT_COMMA_ZERO_STYLE = new DecimalFormat(",##0"); public static DecimalFormat FORMAT_PERCENT_STYLE = new DecimalFormat("#0.00%"); // 將數字轉化為漢字的數組,因為各個實例都要使用所以設為靜態 private static final char[] cnNumbers = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' }; // 供分級轉化的數組,因為各個實例都要使用所以設為靜態 private static final char[] series = { '十', '百', '千', '萬', '十', '百', '千', '億' }; /** * 數字轉換成大寫中文 */ public static final String parseToChinese(String original) { // 成員變量初始化 String integerPart = ""; String floatPart = ""; if (original.contains(".")) { // 如果包含小數點 int dotIndex = original.indexOf("."); integerPart = original.substring(0, dotIndex); floatPart = original.substring(dotIndex + 1); } else { // 不包含小數點 integerPart = original; } StringBuffer sb = new StringBuffer(); // 整數部分處理 for (int i = 0; i < integerPart.length(); i++) { int number = getNumber(integerPart.charAt(i)); sb.append(cnNumbers[number]); if(i <= integerPart.length() - 2){ sb.append(series[integerPart.length() - 2 - i]); } } // 小數部分處理 if (floatPart.length() > 0) { sb.append("點"); for (int i = 0; i < floatPart.length(); i++) { int number = getNumber(floatPart.charAt(i)); sb.append(cnNumbers[number]); } } // 返回拼接好的字符串 return sb.toString(); } /** * 將字符形式的數字轉化為整形數字 */ private static int getNumber(char c) { String str = String.valueOf(c); return Integer.parseInt(str); } /** * 千分位不保留兩位小數 * @param object * @return */ public static String NUM_FORMAT_COMMA_ZERO(Object object) { if(object==null){ return "--"; } return FORMAT_COMMA_ZERO_STYLE.format(object); } /** * 千分位兩位小數 * @param object * @return */ public static String NUM_FORMAT_COMMA(Object object) { if(object==null){ return "--"; } return FORMAT_COMMA_STYLE.format(object); } /** * 百分比兩位小數 * @param object * @return */ public static String NUM_FORMAT_PERCENT(Object object) { if(object==null){ return "--"; } return FORMAT_PERCENT_STYLE.format(object); } }