/** */ /** * 将整数型的小写金额变换成中文大写金额 * @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')); } }