读入一个浮点数,将其转换为中文金额的大写形式,如123.45转化为壹佰贰拾叁元肆角伍分

解决方案 »

  1.   

    我发给你,记得给分啊.
    public class Change{

    void fun(String str)
    {
    String str1="零一二三四五六七八九";
    String str2="千百十万千百十元角分";
    double money=Double.parseDouble(str);
    long temp;
    long m[] =new long[10];
    int i;
    boolean flag=false;
    int x=0;
    int y=9;
    money=money*100+0.5;
    temp=(long)money;
    m[0]=temp/1000000000;
    m[1]=(temp%1000000000)/100000000;
    m[2]=(temp%100000000)/10000000;
    m[3]=(temp%10000000)/1000000;
    m[4]=(temp%1000000)/100000;
    m[5]=(temp%100000)/10000;
    m[6]=(temp%10000)/1000;
    m[7]=(temp%1000)/100;
    m[8]=(temp%100)/10;
    m[9]=temp%10;
    for(i=0;i<10;i++)
    {
    if(m[i]!=0)
    {
    x=i;
    break;
    }
    }
    for(i=9;i>=0;i--)
    {
    if(m[i]!=0)
    {
    y=i;
    break;
    }
    }
    for(i=x;i<y+1;i++)
    {
    //System.out.print(m[i]);
    if(m[i]==0)
    {
    if(flag==false)
    {
    System.out.print(""+str1.charAt((int)m[i]));
    flag=true;
    }

    }
    else
    {

    System.out.print(""+str1.charAt((int)m[i])+str2.charAt(i));
    flag=false;
    }
    }
    }
    public static void main(String args[])
    {
    Change obj=new Change();
    obj.fun(args[0]);
    }}
      

  2.   

    象你这样的把String str1="零一二三四五六七八九";改成String str1="零壹贰叁肆伍陆柒捌玖";这样就可以了.
      

  3.   

    还是转一下吧
    http://community.csdn.net/Expert/topic/5762/5762030.xml?temp=.1518671
      

  4.   

    还是有点问题   你输入  11111111很好
                     输入  10000000 就有问题了E:\JavaTest>java Change 10000000
    一千
    E:\JavaTest>java Change 11111111
    一千一百一十一万一千一百一十一元