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);
}
}
java阿拉伯数字表示的金额转换成中文大写金额的更多相关文章
- c#金额转换成中文大写金额
2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param ...
- PHP 数字金额转换成中文大写金额的函数 数字转中文
/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...
- c#金额转换成中文大写金额 .Net开发Windows服务
c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...
- 在C#中将金额转换成中文大写金额
具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney ...
- JS把数字金额转换成中文大写数字的函数
//把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...
- java程序练习:输入数字转换成中文输出(金额相关)
//题目,做一个输入金额数字,输出转换成中文的金额名称.public class Test { public static void main(String[] args) { System.out. ...
- excel小写金额转换成中文大写
假设 假设数据在A1单元格 任何一个个单元格输入公式=TEXT(INT(A1),"[dbnum2]")&"元"&IF(INT(A1*10)-IN ...
- 在C#中将数字转换成中文
上篇我们讲了在MSSQL中将数字转换成中文,这篇我们讲讲在C#中将数字转换成中文 下篇将讲一下如何将金额转换成中文金额,废话不多说,具体代码如下: /// <summary> /// 数字 ...
- JavaScript将输入的数字金额转换成对应的中文大写金额
// 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...
随机推荐
- Hibernate3的DetachedCriteria支持
Hibernate3支持DetachedCriteria,这是一个非常有意义的特性!我们知道,在常规的Web编程中,有大量的动态条件查询,即用户在网页上面自由选择某些条件,程序根据用户的选择条件,动态 ...
- C函数tolower,与toupper
tolower 将大写转换成小写. 非字母字符不做出处理. 这个函数用法有点特殊他是处理字符的,而不是处理字符串的. 所谓的不能处理字符串不是说他不能处理字符串,他处理的时候对字符串必须是 ...
- Xenomai 安装准备工作
一些安装xenomai的参考资料: http://my.oschina.net/hevakelcj/blog/124290 http://blog.sina.com.cn/s/blog_60b9ee1 ...
- Meta Programming
[本文链接] http://www.cnblogs.com/hellogiser/p/meta-programming.html [分析] Template Mataprogram,中文叫模板元编程. ...
- Eclipse 输入提示设置
提升eclipse工具的效率是提升开发效率很重要的一个环节,然而java函数之多你不可能完全记住.eclipse默认打个“.”号后会有相应的提示,然而这略显笨拙.只需要对eclipse进行简单的配置便 ...
- MyEclipse内存溢出问题解决方法
tomcat从1.7换到1.6,一直报这个错:java.lang.reflect.InvocationTargetException 解决方法: 加入: -server -Xms512m -Xmx20 ...
- Netbeans快捷键
一.常用快捷键:1.在文件中查找指定内容 Ctrl+F2.在文件中替换指定内容 Ctrl+H3.在整个项目中查找指定内容 Ctrl+Shift+f4.自动复制整行代码 Ctrl+Shift+上/下方向 ...
- struts1老古董配置
<!--Struts1 struts-config.xml Demo --><?xml version="1.0" encoding="UTF-8&qu ...
- 【读书笔记】读《JavaScript模式》 - 对象创建模式
JavaScript是一种简洁明了的语言,其中并没有在其他语言中经常使用的一些特殊语法特征,比如命名空间(namespace).模块(module).包(package).私有属性(private p ...
- 安卓向服务器发送List数据
第一步: 首先写一个自定义的JavaBean,以UserInfo.java为例,需要实现对象序列化的接口,因为之后输出流对象需要实现输出可序列化的对象.不这样的话,后续时发送时会报异常 package ...