日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

阿拉伯数字转中文(汉字)数字

發布時間:2024/9/19 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 阿拉伯数字转中文(汉字)数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/**
 * 數字工具類型
 * @author rubekid
 *
 */
public class NumberUtils {
    private final static String[] GROUP_UNITS = {"", "萬", "億", "兆"};
    private final static String[] BASE_UNITS = { "", "十", "百", "千" };
    private final static char[] SIMPLIFIED_NUMBERIC = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };
    private final static char[] TRADITIONAL_NUMBERIC = { '零', '壹', '貳', '叁', '肆', '伍', '陸', '柒', '捌', '玖' };
    
    /**
     * 轉為中文數字
     * @param number 數值
     * @param isTraditional 是否轉為繁體
     * @return
     */
    public static String toChinese(long number, boolean isTraditional){
        char[] numberic = isTraditional ? TRADITIONAL_NUMBERIC : SIMPLIFIED_NUMBERIC;
        
        if(number==0){//判斷是否為0
            return String.valueOf(numberic[0]);
        }
        
        String str = String.valueOf(number);
        char[] numbers = str.toCharArray();
        int len = str.length();
        //統計連續出現的0
        int zeroCount = 0;
        
        StringBuffer stringBuffer = new StringBuffer();
        for(int i = 0; i<len ;i++){
            int value = Integer.parseInt(String.valueOf(numbers[i]));
            int index = len - i - 1;
            //在分組中的下標
            int _index  = index % 4;
            if(value == 0){
                zeroCount++;
                if((_index == 0 && zeroCount < 4 ) || (index % 8 == 0 && zeroCount < 8)){
                    stringBuffer.append(getGroupUnit(index));
                    zeroCount = 0;
                }
            }
            else{
                if(zeroCount > 0){
                    stringBuffer.append(numberic[0]);
                }
                if(_index == 0){
                    stringBuffer.append(numberic[value] + BASE_UNITS[_index] + getGroupUnit(index));
                    zeroCount = 0;
                }
                else{
                    //調整以“一十”開頭的不需要出現“一” 如:100000 讀“十萬”而不是“一十萬”
                    if(_index == 1 && i==0 && value== 1){
                        stringBuffer.append(BASE_UNITS[_index]);
                    }
                    else{
                        stringBuffer.append(numberic[value] + BASE_UNITS[_index]);
                    }
                    
                }
                zeroCount = 0;
            }
            
        }
        return stringBuffer.toString();
    }
    
    /**
     * 轉為中文數字
     * @param number 數值
     * @return
     */
    public static String toChinese(long number){
        return toChinese(number, false);
    }
    
    /**
     * 轉為中文數字
     * @param number 數值
     * @param isTraditional 是否轉為繁體
     */
    public static String toChinese(int number, boolean isTraditional){
        return toChinese((long)number, isTraditional);
    }
    
    
    /**
     * 轉為中文數字
     * @param number 數值
     */
    public static String toChinese(int number){
        return toChinese(number, false);
    }
    
    /**
     * 獲取分組單位 
     * @param index
     * @return
     */
    private static String getGroupUnit(int index){
        String groupUnit = GROUP_UNITS[(index / 4) % 2];
        if(index % 8 == 0 && index > 0){
            groupUnit += GROUP_UNITS[(index / 8) +1];
        }
        return groupUnit;
    }
}

總結

以上是生活随笔為你收集整理的阿拉伯数字转中文(汉字)数字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。