数字金额大写转换

来源:互联网 发布:德温特专利数据库链接 编辑:程序博客网 时间:2024/04/30 08:16

/**
  *数字金额大写转换,思想先写个完整的然后将如零拾替换成零
  *要用到正则表达式
  */
publicstatic String digitUppercase(Float m){
  doublen = m.doubleValue();
  Stringfraction[] = {"角", "分"};
    String digit[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
    String unit[][] = {{"元", "万", "亿"},
                  {"","拾", "佰", "仟"}};
    String head = n < 0? "负": "";
    n = Math.abs(n);
     
    String s = "";
    for (int i = 0; i < fraction.length; i++) {
        s += (digit[(int)(Math.floor(n * 10 * Math.pow(10, i)) % 10)] +fraction).replaceAll("(零.)+", "");
    }
    if(s.length()<1){
      s= "整"; 
    }
    int integerPart = (int)Math.floor(n);
    for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
        String p ="";
        for (int j = 0; j < unit[1].length && n > 0; j++) {
            p = digit+unit[1][j] + p;
            integerPart = integerPart/10;
        }
        s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0] +s;
    }
    return head + s.replaceAll("^(零.)+", "").replaceAll("(零.)*零元", "元").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
}
}

0 0
原创粉丝点击