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, ...
随机推荐
- SqlServer Link 链接服务器的使用
--创建linked exec sp_addlinkedserver 'a','','SQLNCLI','your ipaddress' --登陆linked exec sp_addlinkedsrv ...
- WPF获取鼠标当前位置
/// <summary> /// 设置鼠标的坐标 /// </summary> /// <param name="x">横坐标</par ...
- Linux for windows cp 数据中文乱码
今天遇到一个很奇葩的问题,不仅让我纠结了半天更影响了我的工作效率找到了一种解决方法.分享和记录下以备自己和后人参考 说下情况 本人的Linux服务器上的数据要cp到新安装的windows server ...
- Hadoop日记Day1---Hadoop介绍
一.Hadoop项目简介 1. Hadoop是什么 Hadoop是一个适合大数据的分布式存储与计算平台. 作者:Doug Cutting:Lucene,Nutch. 受Google三篇论文的启发 2. ...
- 最新 DEDECMS SQL 注入 0day
4月29日消息:国内安全研究团队“知道创宇”称截获到最新DEDECMS SQL注入0day,DEDECMS官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用 ...
- HNU 12817 Shipura(表达式求值)
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12817 解题报告:定义两种运算符号,一种是>>,就 ...
- cocos2d 如何优化内存使用
如何优化内存使用 内存优化原理 为优化应用内存使用,开发人员首先应该知道什么最耗应用内存,答案就是纹理! 纹理几乎会占据90%应用内存.所以尽量最小化应用的纹理内存使用,否则应用很有可能会因为低内存而 ...
- 基于网页内容数据采集 PHP开发学习笔记
jQuery数字的截取: str.toFixed(num);//小数的截取 toFixed() <script type="text/javascript"> var ...
- [ruby on rails] 跟我学之(7)创建数据
通过form来创建数据,本章节将会涉及内容:创建form,用户重导向,渲染views 和 flash消息. 1. views初步 编辑 app/views/posts/index.html.erb这个 ...
- 推荐一个linux下的web压力测试工具神器webbench
推荐一个linux下的web压力测试工具神器webbench2014-04-30 09:35:29 来源: 评论:0 点击:880 用多了apache的ab工具之后你就会发现ab存在很多问题, ...