WEB开发网
开发学院WEB开发Jsp 将数字字符串转换成大写金额字符串 阅读

将数字字符串转换成大写金额字符串

 2008-01-05 18:46:39 来源:WEB开发网   
核心提示: //将数字字符串转换成大写金额字符串 //@author 何禧 //@created 2004/11/15 19:37 //@param 数字字符串 //@return 大写金额字符串 //@throws Exception //可处理的情况包括如下这些数字形式: [.] [0.] [.0] [.3] [.32] [

 //将数字字符串转换成大写金额字符串
 //@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();
 }


Tags:数字 字符串 转换

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接