黑马程序员技术交流社区
标题:
JAVA初学 人民币数字模式与中文繁体模式的转换
[打印本页]
作者:
专注的一批
时间:
2020-4-7 14:29
标题:
JAVA初学 人民币数字模式与中文繁体模式的转换
金额转为大写形式
要求如下:
给定一个浮点数,将其转换为金额的中文大写形式的字符串。例如,123.45表示为“壹佰贰拾叁元肆角伍分”。注意以下几种情况:
A.当金额为整数时,只表示整数部分,省略小数部分,并添加“整”字,例如123表示成“壹佰贰拾叁元整”。
B.当金额中含有连续的0时,只需写一个“零”即可。例如10005表示为“壹万零伍元整”。
C.10的省略表示。例如110表示为“壹佰壹拾元整”,而10表示为“拾元整”。
D.100表示为“壹佰元整”,1000表示为“壹仟元整”等等。
设立三个字符串,方便后续的应用
String yuan="亿千百拾万千百拾元角分";
String big="壹贰叁肆伍陆柒捌玖";
String end="";
1
2
3
将小数点去除,方便后续的运算
int y=(int)Math.round(x*100-0.5);//去小数
1
将小数和整数分离,并将整数部分转为字符串的形式
int xiaoshu=y%100;
y=y/100;
String money=String.valueOf(y);//转换成字符串形式
1
2
3
按照标号,去寻找对应的数字大写和单位
end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;//按照标号去寻找对应的大写和单位
1
charAt() 方法用于返回指定索引处的字符
所以 该方法具体内容如下
外汇常见问题http://www.fx61.com/faq
if (y==0&&xiaoshu==0) {//小数整数均为零时
end=end+"零元";
}
else if (y==10&&xiaoshu==0) {//为10时
end="拾元整"+end;
}
else if (y!=0&&xiaoshu==0&&y!=10&&y%10!=0) {//小数为零而整数不为零
int j=money.length()-1;
int k=8;
while(j>=0)
{
if(money.charAt(j)=='0'&&money.charAt(j-1)=='0')
{
j--;
k--;
continue;
}
else if (money.charAt(j)=='0'&&money.charAt(j-1)!='0') {
end="零"+end;
j--;
k--;
continue;
}
end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;//按照标号去寻找对应的大写和单位
j--;
k--;
}
end=end+"整";
}
else if (y==0&&xiaoshu!=0) {//只有小数时
int m=xiaoshu/10;
int n=xiaoshu%10;
if (m!=0) {
end=end+big.charAt(m-1)+"角";
}
if (n!=0) {
end=end+big.charAt(n-1)+"分";
}
}
else if (y!=0&&xiaoshu!=0&&y!=10&&y%10!=0) {//全都不为零时
int m=xiaoshu/10;
int n=xiaoshu%10;
if (m!=0) {
end=end+big.charAt(m-1)+"角";
}
if (n!=0) {
end=end+big.charAt(n-1)+"分";
}
int j=money.length()-1;
int k=8;
while(j>=0)
{
if(money.charAt(j)=='0'&&money.charAt(j-1)=='0')
{
j--;
k--;
continue;
}
else if (money.charAt(j)=='0'&&money.charAt(j-1)!='0') {
end="零"+end;
j--;
k--;
continue;
}
end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;
j--;
k--;
}
}
else if (y%10==0) {//所求数是10的倍数时
int j=money.length()-1;
int k=8;
while(j>=0)
{
if(money.charAt(j)=='0')
{
j--;
k--;
continue;
}
end=big.charAt(money.charAt(j)-'1')+""+yuan.charAt(k)+""+end;
j--;
k--;
}
end=end+"元整";
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2