1234589.26就是换算为。。圆多少角多少分的形式?

解决方案 »

  1.   


    做过public class test{
      String bignum[] = {"零","一","二","三","四","五","六","七","八","久"};
      String sign1[] = {"","十","百","千"};
      String sign2[] = {"圆","万","亿","兆"};
      String sign3[] = {"角","分","厘"};
      test(String s){
        s = s.replaceFirst("^0+","");
        int pt = s.indexOf(".");
        if(pt<0)
          s = parta(s);
        else
          s = parta(s.substring(0,pt))+partb(s.substring(pt+1));
        System.out.println(s);
      }
      String parta(String s){
        int[] number = new int[s.length()];
        for(int i=0;i<s.length();i++)
          number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
        s = "";
        for(int i=number.length-1;i>=0;i--){
          s+=bignum[number[i]];
          s+=i%4==0?sign2[i/4]:number[i]>0?sign1[i%4]:"";
        }
        while(s.indexOf("零零")!=-1)
          s=s.replaceFirst("零零","零");
        for(int i=0;i<sign1.length;i++)
          while(s.indexOf("零"+sign2[i])!=-1)
            s=s.replaceFirst("零"+sign2[i],sign2[i]);
        for(int i=sign2.length-1;i>0;i--)
          while(s.indexOf(sign2[i]+sign2[i-1])!=-1)
            s=s.replaceFirst(sign2[i]+sign2[i-1],sign2[i]);
        return s;
      }
      String partb(String s){
        int[] number = new int[s.length()];
        for(int i=0;i<s.length();i++)
          number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
        s = "";
        for(int i=number.length-1;i>=0;i--)
          if(number[i]>0)
            s += bignum[number[i]]+sign3[number.length-i-1];
        return s;
      }
      public static void main(String args[]){
        new test(args[0]);
      }
    }C:\java>java test 0021000230100.003
    二百一十亿零二十三万零一百圆三厘
      

  2.   

    这个是一个完整可用版
    http://www.java2000.net/viewthread.jsp?tid=32
      

  3.   

    之前也做过,中文和英文也有,不过是用script做的.嘎嘎...估计不适用.呵呵.
      

  4.   

    转贴一个吧:
    public class ChineseCurrency {
        public static void main(String[] args) {        Scanner scan = new Scanner(System.in);
            System.out.println("please   input   the   price:");
            double number = scan.nextDouble();        System.out.println(toChineseCurrency(new Double(number)));
        }    public static String toChineseCurrency(Object o) {
            if (o instanceof Number) {
                String s = new DecimalFormat("#.00").format(o);
                System.out.println(s);
                s = s.replaceAll("\\.", "");
                char[] digit = {'零', '壹', '\u8D30', '\u53C1', '肆', '伍', '\u9646', '\u67D2', '捌', '玖'};
                String unit = "仟佰拾兆仟佰拾\u4EBF仟佰拾万仟佰拾元角分";
                int length = unit.length();
                StringBuffer sb = new StringBuffer(unit);
                for (int i = s.length() - 1; i >= 0; i--) {
                    sb = sb.insert(length - s.length() + i, digit[(s.charAt(i) - 0x30)]);
                }
                s = sb.substring(length - s.length(), length + s.length());
                s = s.replaceAll("零[拾佰仟]", "零").replaceAll("零{2,}", "零")
                    .replaceAll("零([兆万元])", "$1").replaceAll("零[角分]", "");
                return s;
            } else {
                throw new NumberFormatException();
            }
        }
    }
    UNICODE码自己转一下, 我在日文系统下. 
      

  5.   

    public  String  GetBigMoney(double eSender) 
        { 
          double NewMoney; 
          int Index, len, flag; 
          String StrTemp = null; 
          char[] p; 
          String Number[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 
          String MonetaryUnit[] = {"万","仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","圆","角","分"} ; 
          NewMoney = Math.abs(eSender); 
          DecimalFormat deciformat; 
            deciformat=(DecimalFormat)DecimalFormat.getInstance(); 
               deciformat.applyPattern("#######"); 
          String m = java.lang.String.valueOf(deciformat.format(NewMoney * 100)); 
           int i; 
           if((i = m.indexOf('.')) != -1) 
             m = m.substring(0, i); 
             p = new char[m.length()]; 
             //p = new char[40]; 
             m.getChars(0, m.length(), p, 0); 
             //len=m.length(); 
          if (NewMoney > 100000000000.00) { 
            StrTemp = ""; // FloatAsComma( NewMoney, False ); 
            return StrTemp; 
          } 
          if (NewMoney < 0.01) { 
            StrTemp = "零"; 
            return StrTemp; 
          } 
          if (eSender<0) { 
            StrTemp = "负"; 
          } 
          else { 
            StrTemp = ""; 
          } 
          flag = 1; 
          len =p.length; 
    //      System.out.println("1111"); 
    //      System.out.println(len); 
          for (Index=(15-len);Index<15;Index++)  
          { 
            if (p[Index - 15 + len]!='0')  
            { 
              StrTemp = StrTemp + Number[Integer.parseInt(String.valueOf(p[Index-15+len]))]; 
              StrTemp = StrTemp + MonetaryUnit[Index]; 
            } 
            else  
            { 
              if (Index == 5)  
              { 
                if ((p[Index - 14 + len]!= '0') || (p[Index-13+len] != '0'))  
                { 
                  StrTemp = StrTemp + MonetaryUnit[Index + 3]; 
                  flag = 0; 
                } 
       
              } 
              else  
              { 
                if ((Index == 12) ||( (Index == 8) && (flag ==1)) || (Index == 4))  
                { 
                  StrTemp = StrTemp + MonetaryUnit[Index]; 
                } 
                if ((p[Index-15 + len] != '0') && (Index != 14))  
                { 
                  StrTemp = StrTemp +Number[Integer.parseInt(String.valueOf(p[Index-15+len]))]; 

                } 
              } 
            } 
          } 
            if (p[m.length()-1] == '0')  
            { 
              StrTemp = StrTemp + "整"; 
            } 
         return StrTemp; 
      }