//将数字字符串转换成大写金额字符串 //@author 何禧 //@created 2004/11/15 19:37 //@param 数字字符串 //@return 大写金额字符串 //@throws exception //可处理的情况包括如下这些数字形式: [.] [0.] [.0] [.3] [.32] [1.] [23] public string cncurrency(string snumber) throws exception { string sunit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟"; string schinese = "壹贰叁肆伍陆柒捌玖"; int nunit; //货币单位下标 int ndotpos; //传入的数字中,小数点所在的位置 int nlen; //长度 int nvalue; //临时数值 int i; //循环变量 string sinteger; //整数部分 string sdecimal; //小数部分 string ssuffix=""; //后缀部分 if (snumber == null) throw new exception("没有传入数字!"); //获取小数点所在位置 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(); //开始处理整数部分 nlen = sinteger.length(); for(i=0;i 0) ) sbchinese.append("元"); //开始处理小数部分 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)); } //如果小数部分没写任何内容, //返回中文结果 if (sbchinese.length() == 0) ssuffix = "零元"; sbchinese.append(ssuffix); return sbchinese.tostring(); }