最大数字要处理到千亿
也就是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. 工具类HttpServerUtility

    在ASP.NET服务器上提供一个辅助的工具类HttpServerUtility,该类提供了一些处理请求的辅助方法. MapPath:计算网站中虚拟路径所对应的物理文件路径. HtmlEncode:将H ...

  2. linux 的终端字体色和背景色的修改方法(二)

     Linux终端下的颜色设置 2013-08-31 22:57:15 分类: LINUX   在 ANSI 兼容终端(例如 xterm.rxvt.konsole 等)里, 可以用彩色显示文本而不仅仅是 ...

  3. 读<你必须知道的.NET>IL指令笔记

    IL指令笔记: 1.newObj和initObj MSDN解释:newObj用于分配和初始化对象,而initObj用户初始化值类型 newObj解释: (1):从托管堆分配指定类型所需要的全部内存空间 ...

  4. dedecms无法创建rss文件,提示DedeTag Engine Create File False

    最近有网友问dedecms无法创建rss文件提示:DedeTag Engine Create File False 这个提示一般出现以下情况才会出现:1.模板文件不存在,您可能误删除或者没有正确指定模 ...

  5. (源码)自己写的ScrollView里套漂亮的圆角listview(算是漂亮吧。。。)

    找了相关的资料终于写完了: http://blog.csdn.net/jamin0107/article/details/6973845 和 http://emmet1988.iteye.com/bl ...

  6. HLG2035广搜

    Diablo Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 42(21 users) Total Accepted: 23(20 us ...

  7. urllib2加入header及解决中文乱码问题

    def main(): url = "http://www.douban.com" #伪装桌面浏览器 headers = {'User-Agent':'Mozilla/5.0 (W ...

  8. In-App Purchases验证

    package com.demo.controller.web.app; import java.io.BufferedOutputStream; import java.io.BufferedRea ...

  9. HTML表单元素登陆界面

    <form action="" method="post" name="myform"><p>E-mail:< ...

  10. 【leetcode】Best Time to Buy and Sell Stock II

    Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...