现在的位置: 首页 > 综合 > 正文

Java大写金额转换器

2013年10月07日 ⁄ 综合 ⁄ 共 2031字 ⁄ 字号 评论关闭

/**
 * 大写金额转换器
 * @author Samland
 * @version 1.1, Oct. 9th, 2011
 */
public class CurrencyUtil {
    public static String capitalMoney(Double value) {
        if (value==null) return null;
        String[] sCaption =  {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","分","角","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟","亿"};
        if (value==0)
            return "零元整";

        StringBuffer result = new StringBuffer();
        
        DecimalFormat df = new DecimalFormat("####.00");
        String strValue = df.format(value)+"00";
//        System.out.print(strValue+"=");
        int p = strValue.indexOf(".");
        if (p>0) {
            strValue = strValue.substring(0, p+3);
            strValue = strValue.replaceAll("\\.", "");
        }

        if (value<0) {
            result.append("负");
            strValue = strValue.substring(1);
        }

        String sTemp = "";
        char[] charArray = strValue.toCharArray();
        int iLength = charArray.length;
        for (int i=iLength; i>0; i--) {
            String sUnit = sCaption[9+i];
            String sValue = String.valueOf(charArray[iLength-i]);
            String sNextValue = i>1?String.valueOf(charArray[iLength-i+1]):"";
//            System.out.println(sValue+sUnit);

            if (sValue.equals("0")) {
                if (sUnit.equals("分")) {
                    break;
                }
                if (i>1 && sNextValue.equals("0")
                        && sUnit.equals("角")) {
                    result.append(sTemp);
                    result.append("元整");
                }
                if ((i-3)%4==0) {
                    if (sUnit.equals("元")||sUnit.equals("亿")) {
                        result.append(sTemp);
                    }
                    sTemp  = sUnit;
                }
                if (i>1 && !sNextValue.equals("0") &&!sUnit.equals("元")) {
                    result.append(sTemp);
                    result.append("零");
                    sTemp = "";
                }
            }else{
                result.append(sTemp);
                result.append(sCaption[Integer.parseInt(sValue)]);
                result.append(sUnit);
                sTemp = "";
            }
        }
        sTemp = result.toString();
        sTemp = sTemp.replaceAll("亿万","亿");
        sTemp = sTemp.replaceAll("元元","元");
        return sTemp;
    }

抱歉!评论已关闭.