//将数字字符串转换成大写金额字符串 //@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(); }
将数字字符串转换成大写金额字符串
最新推荐文章于 2023-03-30 21:39:14 发布