//將數(shù)字字符串轉(zhuǎn)換成大寫金額字符串 //@author 何禧 //@created 2004/11/15 19:37 //@param 數(shù)字字符串 //@return 大寫金額字符串 //@throws Exception //可處理的情況包括如下這些數(shù)字形式: [.] [0.] [.0] [.3] [.32] [1.] [23] public String cnCurrency(String sNumber) throws Exception { String sUnit = "分角元拾佰仟萬拾佰仟億拾佰仟兆拾佰仟"; String sChinese = "壹貳叁肆伍陸柒捌玖"; int nUnit; //貨幣單位下標(biāo) int nDotPos; //傳入的數(shù)字中,小數(shù)點(diǎn)所在的位置 int nLen; //長度 int nValue; //臨時數(shù)值 int i; //循環(huán)變量 String sInteger; //整數(shù)部分 String sDecimal; //小數(shù)部分 String sSuffix=""; //后綴部分 if (sNumber == null) throw new Exception("沒有傳入數(shù)字!"); //獲取小數(shù)點(diǎn)所在位置 nDotPos = sNumber.indexOf("."); if (nDotPos == -1){ sInteger = (sNumber.equals(""))?"0":sNumber; sDecimal = "00"; }else{ sNumber = new StringBuffer().append("0").append(sNumber).append("00").toString(); nDotPos = sNumber.indexOf("."); sInteger = sNumber.substring(0,nDotPos); sDecimal = sNumber.substring(nDotPos+1).substring(0,2); } StringBuffer sbChinese = new StringBuffer(); //開始處理整數(shù)部分 nLen = sInteger.length(); for(i=0;i 0) ) sbChinese.append("元"); //開始處理小數(shù)部分 if (sDecimal.equals("00")){ sSuffix = "整"; }else{ nValue = Integer.parseInt(sDecimal.substring(0,1)); if (nValue != 0) sbChinese.append(sChinese.substring(nValue-1,nValue)).append(sUnit.substring(1,2)); nValue = Integer.parseInt(sDecimal.substring(1,2)); if (nValue != 0) sbChinese.append(sChinese.substring(nValue-1,nValue)).append(sUnit.substring(0,1)); } //假如小數(shù)部分沒寫任何內(nèi)容, //返回中文結(jié)果 if (sbChinese.length() == 0) sSuffix = "零元"; sbChinese.append(sSuffix); return sbChinese.toString(); } 新聞熱點(diǎn)
疑難解答