最大数字要处理到千亿
也就是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阿拉伯数字表示的金额转换成中文大写金额的更多相关文章

  1. c#金额转换成中文大写金额

    2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param ...

  2. PHP 数字金额转换成中文大写金额的函数 数字转中文

    /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...

  3. c#金额转换成中文大写金额 .Net开发Windows服务

    c#金额转换成中文大写金额   2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...

  4. 在C#中将金额转换成中文大写金额

    具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney ...

  5. JS把数字金额转换成中文大写数字的函数

    //把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...

  6. java程序练习:输入数字转换成中文输出(金额相关)

    //题目,做一个输入金额数字,输出转换成中文的金额名称.public class Test { public static void main(String[] args) { System.out. ...

  7. excel小写金额转换成中文大写

    假设 假设数据在A1单元格 任何一个个单元格输入公式=TEXT(INT(A1),"[dbnum2]")&"元"&IF(INT(A1*10)-IN ...

  8. 在C#中将数字转换成中文

    上篇我们讲了在MSSQL中将数字转换成中文,这篇我们讲讲在C#中将数字转换成中文 下篇将讲一下如何将金额转换成中文金额,废话不多说,具体代码如下: /// <summary> /// 数字 ...

  9. JavaScript将输入的数字金额转换成对应的中文大写金额

    // 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...

随机推荐

  1. UISearchBar和 UISearchDisplayController的使用

    感觉好多文章不是很全面,所以本文收集整合了网上的几篇文章,感觉有互相补充的效果. 如果想下载源码来看:http://code4app.com/search/searchbar .本源码与本文无关 1. ...

  2. mysql链接数据库时报错

    今天在命令行下链接mysql数据库报错,如下: ERROR (HY000): Can't connect to MySQL server on 'ost' (113) 这是一个什么玩意呢,怎么会报这个 ...

  3. memcached工作原理

    1.Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找.对比以及做到尽可能的散列.同时,memcached用的 ...

  4. [Effective JavaScript 笔记]第33条:使构造函数与new操作符无关

    当使用函数作为一个构造函数时,程序依赖于调用者是否记得使用new操作符来调用该构造函数.注意:该函数假设接收者是一个全新的对象. 一个例子 function User(name,pwd){ this. ...

  5. unity3d web.config设置

    原地址:http://www.cnblogs.com/88999660/archive/2013/03/22/2976105.html <?xml version="1.0" ...

  6. 从零开始写一个武侠冒险游戏-7-用GPU提升性能(2)

    从零开始写一个武侠冒险游戏-7-用GPU提升性能(2) ----把地图处理放在GPU上 作者:FreeBlues 修订记录 2016.06.21 初稿完成. 2016.08.06 增加对 XCode ...

  7. 用Maven插件生成Mybatis代码/数据库

    现在代码管理基本上是采用Maven管理,Maven的好处此处不多说,大家用百度搜索会有很多介绍,本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xm ...

  8. linux下vim的常用指令

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  9. emu1

    第一题 一个很奇怪的贪心.先排序一遍,再扫描一遍,能加入尽量加入,不能加入就一定不能加入..由于每次都在可能的最早时间加入一个数可以保证差最小?反正差不多这样了. O(n log n) #includ ...

  10. ICMP-type对应表

    一次在某个防火墙配置策略里看到如下的代码: iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT iptables -A FORWARD -p icmp ...