java阿拉伯数字表示的金额转换成中文大写金额
2016-11-06 01:16
881 查看
最大数字要处理到千亿
也就是12位
整数部分我们可以分成3段处理,xxxx亿,xxxx万,xxxx元,然后小数部分比较好处理
我们发现0比较难处理
什么时候会出现零呢
那就是两个数字之间出现一个或多个零
那么数字可以分成两类,一类是零,一类是非零
我们只需要统计两个非零数中间有多少个零
没有零那就是没有,有就加上'零'
(非零数用shu这个变量统计,零的数量用ling变量统计)
对于十的读法,一种是十五,十六,另一种是一百一十五,一千零一十五
我们只需要判断十前面有没有其他非零数字就能判断是‘十’还是‘一十’
对于三段,每段的四位数字处理方法都一样,处理完的单位(亿,万,元)要么在非零数结尾要么在
零结尾,在这两个地方都加上判断即可
也就是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); } }
相关文章推荐
- 用java代码将阿拉伯数字金额转换成中文大写
- 将阿拉伯数字表示的货币数值转换成以中文大写表示的货币数值
- 报表上金额由阿拉伯数字转换成中文大写
- Java中实现数字金额到中文大写字符的转换!!
- 使用 JAVA 将数字金额转换成大写中文金额
- C#实现阿拉伯数字(小写金额)到大写中文(大写金额)的转换
- 把阿拉伯数字的金额转换为中文大写数字
- C# 实现将阿拉伯数字转换成中文大写金额
- C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)
- 阿拉伯数字转换成中文大写金额
- 报表上金额由阿拉伯数字转换成中文大写
- 阿拉伯数字小写金额转换成中文大写金C额程序说明
- 报表上金额由阿拉伯数字转换成中文大写
- C#写的将阿拉伯数字转换成中文大写金额代码
- 正则也很牛,把阿拉伯数字的金额转换为中文大写数字
- 阿拉伯数字金额转换成中文大写(转)
- 阿拉伯数字金额转换为中文大写
- java实现金额数字转换为中文大写
- java 实验七 之 阿拉伯整数转换为中文大写数字(注意读法)
- 阿拉伯数字金额转换为中文大写之存储过程(更新版)