将整数型的小写金额变换成中文大写金额

 

/**
 * 将整数型的小写金额变换成中文大写金额
 * 
@author 赖雨游
 * 
@version 1.0 2006/08/23
 
*/
  
public   class  NumCurrency2BigCurrency  {
    String numStr;
    
static String bigStr;
    
static String [] bigNum = new String []{"","","","","","","","","",""};
    
final static String S = "";
    
final static String B = "";
    
final static String Q = "";
    
final static String W = "";
    
final static String Y = "亿";
    
final static String Z = "";    
    
//
    public static String getBigCurrency(String param){
        
        
if(param.equals("0")){
            
return bigNum[0];
        }

        
//123456789  <- 1,2345,6789
        param = param.replace(",","");
        
int len = param.length();
        
int s = len / 4;//
        int y = len % 4;//余       
      
        String temp 
= "";
        String rt 
= "";
        
        
//假如不超过万,即不超过四位数
        if(s==0){
            
return get4NumCurrency(param);
        }

        
//假如超过万,即超过四位数
        int pos;
        
for(int i=0;i<=s;i++){
            
if(i==0){
                temp 
= param.substring(0,y);
            }
 else {
                
//pos = 4 *(i-1);
                pos = (i-1)<<2;
                temp 
= param.substring(y + pos,y + pos + 4);
            }

            
//......9兆,1234亿,5678万,9123兆,4567亿,8912万, 3456兆,7891亿,2345万,6789    
            
//避免追加‘零’兆|亿|万
            
//if(get4NumCurrency(temp).equals("")) continue;
            
//追加 X兆|亿|万?
            switch ((s-i)%3){
            
case 0:
                
//兆    or ""
                if(s==i){
                    
//是四位组的最后一位
                    rt += get4NumCurrency(temp);
                }
 else {
                    rt 
+= get4NumCurrency(temp)+Z;
                }

                
break;
            
case 2:
                
//亿
                if(!get4NumCurrency(temp).equals("")){
                    rt 
+= get4NumCurrency(temp)+Y;
                }

                
break;
            
case 1:
                
//
                if(!get4NumCurrency(temp).equals("")){
                    rt 
+= get4NumCurrency(temp)+W;
                }

                
break;            
            }
        
            
        }

        
return rt;
    }

    
/**
     *     //将四位数以内的小写金额转化为大写金额
     *     //如
     *    // 1234 - > 壹仟貳佰叁拾肆        
     *    // 1230 - > 壹仟貳佰叁拾
     *    // 1204 - > 壹仟貳佰零肆
     *    // 1034 - > 壹仟零叁拾肆
     *    // 0234 - > 零貳佰叁拾肆        
     *    // 1200 - > 壹仟貳佰
     *    // 1004 - > 壹仟零肆
     *    // 0034 - > 零叁拾肆        
     *    // 0004 - > 零肆
     *    // 0030 - > 零叁拾
     *    // 0200 - > 零貳佰
     *    // 1000 - > 壹仟
     *  // 0000 - > ""
     *    //    4 - > 肆
     *    //   34 - > 叁拾肆
     *    //   30 - > 叁拾
     *    //  200 - > 貳佰
     *    //  204 - > 貳佰零肆
     *    //  234 - > 貳佰叁拾肆
     * 
@param param
     * 
@return
     
*/

    
public static String get4NumCurrency(String param){        
        
char c;        
        
boolean preHash0 = false;
        String bigCurrency4 
= "";
        
int len = param.length();
        
for(int i=0;i<len;i++){
            c 
= param.charAt(i);            
            
if(c != '0'){
                
if(preHash0){
                    bigCurrency4 
+= bigNum[0];
                    preHash0 
= false;
                }

                
switch (len - i){
                
case 4:                    
                    bigCurrency4 
+= changeBig(c) + Q;                    
                    
break;
                
case 3:
                    bigCurrency4 
+= changeBig(c) + B;
                    
break;
                
case 2:
                    bigCurrency4 
+= changeBig(c) + S;
                    
break;
                
case 1:
                    bigCurrency4 
+= changeBig(c);
                    
break;
                }
 
            }
 else {
                preHash0 
= true;                    
            }
                
        }
        
        
return bigCurrency4;        
    }

    
public static String changeBig(char c) {         
        
return bigNum[c - 48];
    }

}

 

import  junit.framework.TestCase;

public   class  NumCurrency2BigCurrencyTest  extends  TestCase  {

    
protected void setUp() throws Exception {
        
super.setUp();
    }


    
protected void tearDown() throws Exception {
        
super.tearDown();
    }


    
/*
     * Test method for 'NumCurrency2BigCurrency.getBigCurrency(String)'
     
*/

    
public void testGetBigCurrency() {
        assertEquals(
"",NumCurrency2BigCurrency.getBigCurrency("0"));        
        assertEquals(
"壹佰",NumCurrency2BigCurrency.getBigCurrency("100"));
        assertEquals(
"壹万",NumCurrency2BigCurrency.getBigCurrency("10000"));
        assertEquals(
"",NumCurrency2BigCurrency.getBigCurrency("1"));
        assertEquals(
"壹亿貳仟叁佰肆拾伍万陆仟柒佰捌拾玖",NumCurrency2BigCurrency.getBigCurrency("123456789"));
        assertEquals(
"壹拾貳万叁仟肆佰伍拾陆兆柒仟捌佰玖拾壹亿貳仟叁佰肆拾伍万陆仟柒佰捌拾玖",NumCurrency2BigCurrency.getBigCurrency("12,3456,7891,2345,6789"));
        assertEquals(
"壹拾亿零壹",NumCurrency2BigCurrency.getBigCurrency("10,0000,0001"));
        assertEquals(
"壹佰貳拾亿零貳万",NumCurrency2BigCurrency.getBigCurrency("120,0002,0000"));
        assertEquals(
"壹仟零貳拾兆叁仟零捌拾肆亿零壹万零壹佰壹拾壹",NumCurrency2BigCurrency.getBigCurrency("1020,3084,0001,0111"));

    }


    
/*
     * Test method for 'NumCurrency2BigCurrency.get4NumCurrency(String)'
     
*/

    
public void testGet4NumCurrency() {
        assertEquals(
"壹仟貳佰叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("1234"));    
        assertEquals(
"壹仟貳佰叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("1234"));
        
        assertEquals(
"壹仟貳佰叁拾",NumCurrency2BigCurrency.get4NumCurrency("1230"));
        assertEquals(
"壹仟貳佰零肆",NumCurrency2BigCurrency.get4NumCurrency("1204"));
        assertEquals(
"壹仟零叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("1034"));
        assertEquals(
"零貳佰叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("0234"));
        
        assertEquals(
"壹仟貳佰",NumCurrency2BigCurrency.get4NumCurrency("1200"));
        assertEquals(
"壹仟零肆",NumCurrency2BigCurrency.get4NumCurrency("1004"));
        assertEquals(
"零叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("0034"));
        
        assertEquals(
"零肆",NumCurrency2BigCurrency.get4NumCurrency("0004"));
        assertEquals(
"零叁拾",NumCurrency2BigCurrency.get4NumCurrency("0030"));
        assertEquals(
"零貳佰",NumCurrency2BigCurrency.get4NumCurrency("0200"));
        assertEquals(
"壹仟",NumCurrency2BigCurrency.get4NumCurrency("1000"));
        
        assertEquals(
"",NumCurrency2BigCurrency.get4NumCurrency("4"));
        assertEquals(
"叁拾",NumCurrency2BigCurrency.get4NumCurrency("30"));
        assertEquals(
"叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("34"));
        assertEquals(
"貳佰",NumCurrency2BigCurrency.get4NumCurrency("200"));
        assertEquals(
"貳佰零肆",NumCurrency2BigCurrency.get4NumCurrency("204"));
        assertEquals(
"貳佰叁拾肆",NumCurrency2BigCurrency.get4NumCurrency("234"));
    }


    
/*
     * Test method for 'NumCurrency2BigCurrency.changeBig(char)'
     
*/

    
public void testChangeBig() {
        assertEquals(
"",NumCurrency2BigCurrency.changeBig('2'));        
    }
    

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值