人民币换算大小写

package  test;

import  java.math.BigDecimal;

public   class  RMB
    
implements  Comparable  {
  
private String rmb_n, rmb_c;

  
private BigDecimal rmb;

  
private static final String[] daxie = {
      
"""""""""""""",
      
""""""}
;

  
private static final String[] danwei = {
      
"""""亿"""}
;

  
public RMB(double r) {
    BigDecimal rmb 
= new BigDecimal(r + "");
    
this.rmb = rmb;
    
this.rmb_n = format(this.rmb);
    
this.rmb_c = ntoc(this.rmb_n);
  }


  
public RMB(String rmb_n) {
    rmb_n 
= rmb_n.replaceFirst("rmb""");
    rmb_n 
= rmb_n.replaceFirst("RMB""");
    
this.rmb = new BigDecimal(rmb_n);
    
this.rmb_n = format(this.rmb);
    
this.rmb_c = ntoc(this.rmb_n);
  }


  
public String toString() {
    
int index = rmb_n.length() - 3;
    String ss 
= rmb_n.substring(index);
    
while (index - 4 > 0{
      index 
-= 4;
      ss 
= "," + rmb_n.substring(index, index + 4+ ss;
    }

    ss 
= rmb_n.substring(0, index) + ss;
    
return "小写: " + ss + " 大写: " + rmb_c;
  }


  
public int compareTo(Object o) {
    BigDecimal bd 
= (BigDecimal) o;
    
return this.rmb.compareTo(bd);
  }


  
public static String format(BigDecimal rmb) {
    String s 
= rmb.multiply(new BigDecimal(100.0)).longValue() + "";
    
while (s.length() < 3{
      s 
= "0" + s;
    }

    
return s.substring(0, s.length() - 2+ "."
        
+ s.substring(s.length() - 2, s.length());
  }


  
public static String toChinese(double d) {
    BigDecimal bd 
= new BigDecimal(d + "");
    
return ntoc(format(bd));
  }


  
public static String toChinese(String s) {
    s 
= s.replaceFirst("rmb""");
    s 
= s.replaceFirst("RMB""");
    BigDecimal bd 
= new BigDecimal(s);
    
return ntoc(format(bd));
  }


  
private static String ntoc(String s) {
    String ss 
= "", ss_add = "";
    
if (s.charAt(0!= '0'{
      
int index = s.length() - 3, i = 0;
      
while (index > 0{
        
if (i++ == 4{
          
return "错误:超过最大值";
        }

        index 
-= 4;
        
if (index >= 0{
          ss_add 
= change4bit(s.substring(index, index + 4));
        }

        
else {
          ss_add 
= change4bit(s.substring(0, index + 4));
        }

        ss_add 
+= danwei[i - 1];
        ss 
= ss_add + ss;
      }

      ss 
= ss.replaceAll("亿万""亿零");
      ss 
= ss.replaceAll("零零""");
      
if ( (ss.charAt(0+ "").equals(daxie[0])) {
        ss 
= ss.substring(1);
      }

      
while ( (ss.charAt(ss.length() - 1+ "").equals(daxie[0])) {
        ss 
= ss.substring(0, ss.length() - 1);
      }

      ss 
+= "";
    }

    ss_add 
= s.substring(s.length() - 2, s.length());
    
if (ss_add.equals("00")) {
      
return ss + "";
    }

    ss 
+= ntoc_bit(ss_add.charAt(0));
    
if (ss_add.charAt(0!= '0'{
      ss 
+= "";
    }

    
if (ss_add.charAt(1!= '0'{
      ss 
+= ntoc_bit(ss_add.charAt(1)) + "";
    }

    
if ( (ss.charAt(0+ "").equals(daxie[0])) {
      ss 
= ss.substring(1);
    }

    
return ss;
  }


  
private static String change4bit(String s) {
    
while (s.length() < 4{
      s 
= "0" + s;
    }

    String ss 
= "";
    
{
      
if (s.charAt(0!= '0'{
        ss 
+= ntoc_bit(s.charAt(0)) + "";
      }

      
if (s.charAt(1!= '0'{
        
if (s.charAt(0== '0'{
          ss 
+= daxie[0];
        }

        ss 
+= ntoc_bit(s.charAt(1)) + "";
      }

      
if (s.charAt(2!= '0'{
        
if (s.charAt(1== '0'{
          ss 
+= daxie[0];
        }

        ss 
+= ntoc_bit(s.charAt(2)) + "";
      }

      
if (s.charAt(3!= '0'{
        
if (s.charAt(2== '0'{
          ss 
+= daxie[0];
        }

        ss 
+= ntoc_bit(s.charAt(3)) + "";
      }

      
return ss;
    }

  }


  
private static String ntoc_bit(char c) {
    
return daxie[Integer.parseInt(c + "")];
  }


  
public static void main(String[] args) {
    RMB r1 
= new RMB(1.20);
    System.out.println(r1);
//    RMB r2 = new RMB("6543.21");
//    System.out.println(r2);
//    RMB r3 = new RMB("76543.21rmb");
//    System.out.println(r3);
//    RMB r4 = new RMB("19876543.21RMB");
//    System.out.println(r4);
//    RMB r5 = new RMB("rmb219876543.21");
//    System.out.println(r5);
//    RMB r6 = new RMB("RMB543219876543.21");
//    System.out.println(r6);
//    RMB r7 = new RMB("1234123412341234.99");
//    System.out.println(r7);
//    RMB r8 = new RMB("9999999999999999.99rmb");
//    System.out.println(r8);
//    RMB r9 = new RMB("10000000000000000.00");
//    System.out.println(r9);
//    System.out.println(RMB.toChinese(1));
//    System.out.println(RMB.toChinese(0.01));
//    System.out.println(RMB.toChinese(0.1));
//    System.out.println(RMB.toChinese(0.99));
//    System.out.println(RMB.toChinese(1.01));
//    System.out.println(RMB.toChinese(1.1));
//    System.out.println(RMB.toChinese(1.99));
//    System.out.println(RMB.toChinese(10000.1));
//    System.out.println(RMB.toChinese(100000000));
//    System.out.println(RMB.toChinese(100000000.01));
//    System.out.println(RMB.toChinese(110010000.00));
//    System.out.println(RMB.toChinese(1010101.01));
//    System.out.println(RMB.toChinese(100100100.1));
//    System.out.println(RMB.toChinese(100010001000.99));
//    System.out.println(RMB.toChinese(100001000010000.99));
//    System.out.println(RMB.toChinese("100001000010000.99"));
//    System.out.println(RMB.toChinese("100001000010000.99RMB"));
  }

}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值