java阿拉伯數字表示的金額轉換成中文大寫金額


最大數字要處理到千億
也就是12位
整數部分我們可以分成3段處理,xxxx億,xxxx萬,xxxx元,然后小數部分比較好處理
我們發現0比較難處理
什么時候會出現零呢
那就是兩個數字之間出現一個或多個零
那么數字可以分成兩類,一類是零,一類是非零
我們只需要統計兩個非零數中間有多少個零
沒有零那就是沒有,有就加上'零'
(非零數用shu這個變量統計,零的數量用ling變量統計)
對於十的讀法,一種是十五,十六,另一種是一百一十五,一千零一十五
我們只需要判斷十前面有沒有其他非零數字就能判斷是‘十’還是‘一十’
對於三段,每段的四位數字處理方法都一樣,處理完的單位(億,萬,元)要么在非零數結尾要么在
零結尾,在這兩個地方都加上判斷即可

import java.text.DecimalFormat;


public class NumberUtil {
    public static String ToChinese(int Number){
        String ans="";
        String source=String.valueOf(Number);
        
        return ans;
    }

    public static String ToBig(int num){
        String str[]={"壹","貳","叄","肆","伍","陸","柒","捌","玖","十"};
        return str[num-1];
    }
    
    public static String Test2(double x){
        DecimalFormat format = new DecimalFormat("#.00");
        String str = format.format(x);
        System.out.println(str);
        String s[]=str.split("\\.");
        String temp="";
        int ling=0;
        int shu=0;
        int pos=0;
        for(int j=0;j<s[0].length();++j){
            int num=s[0].charAt(j)-'0';
            if(num==0){
                ling++;
                if(ling==s[0].length()){
                    temp="零";
                }
                else if(s[0].length()-j-1==4){
                    if(shu==1&&(s[0].length()-pos-1)>=5&&(s[0].length()-pos-1)<=7){
                        temp+="萬";
                    }
                }
                else if(s[0].length()-j-1==8){
                    if(shu==1&&(s[0].length()-pos-1)>=9&&(s[0].length()-pos-1)<=11){
                        temp+="億";
                    }
                }
            }
            else{
                shu++;
                int flag=0;
                if(shu==1){
                    ling=0;
                    pos=j;
                }
                if(shu==2){
                    flag=1;
                    if(ling>0){
                        temp+="零";
                    }
                    shu=1;
                    pos=j;
                    ling=0;
                }
                if(s[0].length()-j-1==11){
                    temp+=ToBig(num)+"千";
                }
                else if(s[0].length()-j-1==10){
                    temp+=ToBig(num)+"百";
                }
                else if(s[0].length()-j-1==9){
                    if(num==1&&flag!=1)
                        temp+="十";
                    else
                        temp+=ToBig(num)+"十";
                }
                else if(s[0].length()-j-1==8){
                    temp+=ToBig(num)+"億";
                }
                else if(s[0].length()-j-1==7){
                    temp+=ToBig(num)+"千";
                }
                else if(s[0].length()-j-1==6){
                    temp+=ToBig(num)+"百";
                }
                else if(s[0].length()-j-1==5){
                    if(num==1&&flag!=1)
                        temp+="十";
                    else
                        temp+=ToBig(num)+"十";
                }
                else if(s[0].length()-j-1==4){
                    temp+=ToBig(num)+"萬";
                }
                else if(s[0].length()-j-1==3){
                    temp+=ToBig(num)+"千";
                }
                else if(s[0].length()-j-1==2){
                    temp+=ToBig(num)+"百";
                }
                else if(s[0].length()-j-1==1){
                    if(num==1&&flag!=1)
                        temp+="十";
                    else
                        temp+=ToBig(num)+"十";
                }
                else{
                    temp+=ToBig(num);
                }
            }    
//            System.out.println(temp);
    }
        temp+="元";
        for(int j=0;j<s[1].length();++j){
            int num=s[1].charAt(j)-'0';
            if(j==0){
                if(num!=0)
                temp+=ToBig(num)+"角";
                else if(num==0&&1<s[1].length()&&s[1].charAt(1)!='0'){
                    temp+="零";
                }
            }
            else if(j==1){
                if(num!=0)
                temp+=ToBig(num)+"分";
            }
        }
        System.out.println(temp);
        return temp;
}
    public static void main(String[] args) {

        Test2(800230001.23);
    }

}

 


免責聲明!

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



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