当前位置:编程学习 > JAVA >>

Java 金额转换

[java] 
import java.math.BigDecimal; 
import java.util.ArrayList; 
import java.util.List; 
 
 
public class MoneyToChinese { 
 
    private static String[] digit = { "", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万", 
            "亿", "拾亿", "佰亿", "仟亿", "万亿" }; 
    private static final String FEN ="分"; 
    private static final String JIAO ="角"; 
    private static final String YUAN ="圆"; 
    private static final String ZHENG ="整"; 
     
     
    public static void main(String[] args) { 
         
        System.out.println(getMoneyString(1269854896)); 
    } 
     
     
    /**www.zzzyk.com
     * 取得数字对应的中文
     * 
     * @param money
     * @return
     */ 
    public static String getMoneyString(double money) { 
        // 将字符串转为为BigDecimal格式 
        BigDecimal b = new BigDecimal(String.valueOf(money)); 
        // 设置精度为2,小数点后2位 
        String strMoney = "" + b.setScale(2, BigDecimal.ROUND_UNNECESSARY); 
        // 按小数点分为 整数 和 小数 两部分 
        String[] amt = strMoney.split("\\."); 
        // 调用函数获取 元 和 小数 部分的字符串 
        strMoney = getYuan(amt[0]) + YUAN + getJIAOFEN(amt[1]); 
        // 返回最终得到的字符串 
        return strMoney; 
    } 
 
     
     
    /**
     * 得到元的部分
     * 
     * @param s
     * @return
     */ 
    public static String getYuan(String s) { 
        char[] c = s.toCharArray(); 
        StringBuffer chSb = new StringBuffer(); 
        int len = c.length; 
        List list = new ArrayList(); 
        String d = ""; 
        for (int i = 0; i < c.length; i++) { 
            // 如果有几个0挨在一起时, 只显示一个零即可 
            if (i > 0 && c[i] == '0' && c[i] == c[i - 1]) { 
                --len; 
                continue; 
            } 
            // 得到数字对应的中文 
            chSb.append(getChinese(c[i])); 
 
            // 非零时, 显示是几佰, 还是几仟 
            if (!getChinese(c[i]).equals("零")) { 
                d = digit[--len]; 
                list.add(d);// 当数字中有万和十万时, 要去掉十万 
                chSb.append(d); 
            } else { 
                --len; // 如果是0则不取位数 
            } 
        } 
        String chStr = chSb.toString(); 
        // 如果同时包含有万和十万, 则将十万中的万去掉 
        if (list.contains("万") && list.contains("拾万")) { 
            chStr = chStr.replaceAll("拾万", "拾"); 
        } 
        if (list.contains("万") && list.contains("佰万")) { 
            chStr = chStr.replaceAll("佰万", "佰"); 
        } 
        if (list.contains("万") && list.contains("仟万")) { 
            chStr = chStr.replaceAll("仟万", "仟"); 
        } 
        // 如果同时包含亿和十亿, 则将十亿中的亿字去掉 
        if (list.contains("亿") && list.contains("拾亿")) { 
            chStr = chStr.replaceAll("拾亿", "拾"); 
        } 
        if (list.contains("亿") && list.contains("佰亿")) { 
            chStr = chStr.replaceAll("佰亿", "佰"); 
        } 
        if (list.contains("亿") && list.contains("仟亿")) { 
            chStr = chStr.replaceAll("仟亿", "仟"); 
        } 
        if (list.contains("亿") && list.contains("万亿")) { 
            chStr = chStr.replaceAll("万亿", "万"); 
        } 
    &nbs

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,