A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

金额转为大写形式

要求如下:

给定一个浮点数,将其转换为金额的中文大写形式的字符串。例如,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+"元整";

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马