首页 > 其他分享 >貨幣小寫轉大寫金額

貨幣小寫轉大寫金額

时间:2022-11-30 12:01:22浏览次数:36  
标签:小寫 String rail char prefix valStr 貨幣 金額 suffix

public class NumToRMB{       public static void main(String[] args){         System.out.println(changeToBig(Double.parseDouble(args[0])));     }       public static String changeToBig(double value){         char[] hunit={'拾','佰','仟'};                                    //段内位置表示         char[] vunit={'万','亿'};                                         //段名表示         char[] digit={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'}; //数字表示         long midVal = (long)(value*100);                                  //转化成整形         String valStr=String.valueOf(midVal);                             //转化成字符串         String head=valStr.substring(0,valStr.length()-2);                //取整数部分         String rail=valStr.substring(valStr.length()-2);                  //取小数部分           String prefix="";                                                 //整数部分转化的结果         String suffix="";                                                 //小数部分转化的结果         //处理小数点后面的数         if(rail.equals("00")){                                           //如果小数部分为0           suffix="整";         } else{           suffix=digit[rail.charAt(0)-'0']+"角"+digit[rail.charAt(1)-'0']+"分"; //否则把角分转化出来         }         //处理小数点前面的数         char[] chDig=head.toCharArray();                   //把整数部分转化成字符数组         boolean preZero=false;                             //标志当前位的上一位是否为有效0位(如万位的0对千位无效)         byte zeroSerNum = 0;                               //连续出现0的次数         for(int i=0;i<chDig.length;i++){                   //循环处理每个数字           int idx=(chDig.length-i-1)%4;                    //取段内位置           int vidx=(chDig.length-i-1)/4;                   //取段位置           if(chDig[i]=='0'){                               //如果当前字符是0             preZero=true;             zeroSerNum++;                                  //连续0次数递增             if(idx==0 && vidx >0 &&zeroSerNum < 4){               prefix += vunit[vidx-1];               preZero=false;                                //不管上一位是否为0,置为无效0位             }           }else{           zeroSerNum = 0;                                 //连续0次数清零           if(preZero){                                   //上一位为有效0位             prefix+=digit[0];                                //只有在这地方用到'零'             preZero=false;           }           prefix+=digit[chDig[i]-'0'];                    //转化该数字表示           if(idx > 0) prefix += hunit[idx-1];                            if(idx==0 && vidx>0){             prefix+=vunit[vidx-1];                      //段结束位置应该加上段名如万,亿           }         }         }           if(prefix.length() > 0) prefix += '圆';                               //如果整数部分存在,则有圆的字样         return prefix+suffix;                                                            //返回正确表示       } }

标签:小寫,String,rail,char,prefix,valStr,貨幣,金額,suffix
From: https://www.cnblogs.com/roak/p/16938003.html

相关文章