Java中NumberUtil工具類(持續更新中)


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);
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM