zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
  • 相关阅读:
    CENTOS安装部署zabbix
    分解XML方法
    Git使用摘要
    POJ 1274 The Perfect Stall 水二分匹配
    [leetcode]Pascal&#39;s Triangle II
    swift学习笔记(六)析关闭过程和使用分配给属性的默认值
    Qt学习一门:直接使用QT具
    mybatis13 resultMap
    mybatis12 Usermapper.xml
    mybatis11 sqlMapConfig.xml文件说明
  • 原文地址:https://www.cnblogs.com/linkzijun/p/6034580.html
Copyright © 2011-2022 走看看