一,实验要求
给定一个浮点数,将其转化为金额的中文大写形式字符串。例如,123.45转化为“壹佰贰拾叁元肆角伍分”。编写方法,针对以下多种数据情况进一步完善程序。
(1)当金额为整数时,只表示整数部分,省略小数部分,添加“整”字。例如123表示为“壹佰贰拾叁元整”。
(2)当金额中含有连续的0时,只需要一个“零”即可。例如,10005表示为“壹万零伍元整”。
(3)10的省略表示形式。例如110表示为“壹佰壹拾元整”,而10则表示为“拾元整”。
二,实验代码
import java.util.Scanner;
public class TestXiaoShuRMB {
public static String toString(double x)
{
String yuan="亿千百拾万千百拾元角分";
String digit="零壹贰叁肆伍陆柒捌玖";
String result="";
int y=(int)Math.round(x*100-0.5);
int dec=y%100;
y=y/100;
String money=String.valueOf(y);
if(y==0)
{
return result+"零元";
}
if(dec==0)
result="整"+result;
else
{
int a=dec/10;
int b=dec%10;
if(a!=0)
result=result+digit.charAt(a)+"角";
if(b!=0)
result=result+digit.charAt(b)+"分";
}
if(y==10)
{
result="拾元"+result;
return result;
}
else
{
int j=money.length()-1;
int k=8;
while(j>=0)
{
if(money.charAt(j)=='0')
{
j--;k--;
}
result=digit.charAt(money.charAt(j)-'0')+""+yuan.charAt(k)+""+result;
j--;
k--;
}
return result;
}
}
public static void main(String[] args) {
System.out.print("请输入钱数:");
Scanner in=new Scanner(System.in);
double x;
x=in.nextDouble();
in.close();
System.out.println(toString(x));
}
}
三,结果验证