import java.util.Scanner;
class DaXie //人民币小写转大写
{
public static void main(String[] args)
{
System.out.println("请输入您要转换的金额数: ");
int j=0;
Scanner shu=new Scanner(System.in);
double b=shu.nextDouble();
long f=(long)(b*100);
String [] a=new String []{"壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] d=new String[]{"分","角","元","拾","百","千","万","十","百","千","亿","十","百","千","兆","十","百","千"};
String c=new String(""+f);
System.out.println("\n转换后的金额为:\n");
for (int i=0;i<c.length();i++ )
{
if(c.charAt(i)!='0')
{
System.out.print(a[c.charAt(i)-49]+d[c.length()-i-1]);
}
else
{
if (i-j>0)
{
if(c.length()-i==3)
{
System.out.print("元");
}
else
{
System.out.print("零");
j=i;
++j;
}
}
}
}
}
}
这些都是我自己的思路写的,有可能里面有些弯路,希望大家指正。
金额的范围从分到千兆,但是当数量达到兆以上时分和角的金额数由于是double型的,有浮动性不能精确。
我不知道别人的思路是什么,就是想和大家讨论一下,是否还有更简便的算法?还有double型数据的浮动性怎么解决?
class DaXie //人民币小写转大写
{
public static void main(String[] args)
{
System.out.println("请输入您要转换的金额数: ");
int j=0;
Scanner shu=new Scanner(System.in);
double b=shu.nextDouble();
long f=(long)(b*100);
String [] a=new String []{"壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] d=new String[]{"分","角","元","拾","百","千","万","十","百","千","亿","十","百","千","兆","十","百","千"};
String c=new String(""+f);
System.out.println("\n转换后的金额为:\n");
for (int i=0;i<c.length();i++ )
{
if(c.charAt(i)!='0')
{
System.out.print(a[c.charAt(i)-49]+d[c.length()-i-1]);
}
else
{
if (i-j>0)
{
if(c.length()-i==3)
{
System.out.print("元");
}
else
{
System.out.print("零");
j=i;
++j;
}
}
}
}
}
}
这些都是我自己的思路写的,有可能里面有些弯路,希望大家指正。
金额的范围从分到千兆,但是当数量达到兆以上时分和角的金额数由于是double型的,有浮动性不能精确。
我不知道别人的思路是什么,就是想和大家讨论一下,是否还有更简便的算法?还有double型数据的浮动性怎么解决?