货币单位类RmbUnit

import java.math.BigDecimal;


public enum RmbUnit {
    FEN{
        public String toFen(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C1.divide(C1)).stripTrailingZeros().toPlainString();
        }

        public String toJiao(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C2.divide(C1)).stripTrailingZeros().toPlainString();
        }

        public String toYuan(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C3.divide(C1)).stripTrailingZeros().toPlainString();
        }
    },
    JIAO{
        public String toFen(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C1.divide(C2)).stripTrailingZeros().toPlainString();
        }

        public String toJiao(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C2.divide(C2)).stripTrailingZeros().toPlainString();
        }

        public String toYuan(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C3.divide(C2)).stripTrailingZeros().toPlainString();
        }
    },
    YUAN{
        public String toFen(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C1.divide(C3)).stripTrailingZeros().toPlainString();
        }

        public String toJiao(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C2.divide(C3)).stripTrailingZeros().toPlainString();
        }

        public String toYuan(String amt) {
            BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
            return bigD.divide(C3.divide(C3)).stripTrailingZeros().toPlainString();
        }
    };
    
    static final BigDecimal C1=new BigDecimal(1);
    static final BigDecimal C2=C1.multiply(new BigDecimal(10));
    static final BigDecimal C3=C2.multiply(new BigDecimal(10));
    
    public String toFen(String amt) {
        throw new AbstractMethodError();
    }

    public String toJiao(String amt) {
        throw new AbstractMethodError();
    }

    public String toYuan(String amt) {
        throw new AbstractMethodError();
    }

}

 测工具类不适用于System.out.println(RmbUnit.FEN.toFen("0.0")); 这个会放回0.0,其他我测过都ok的。

public static void main(String[] args) {
        
        System.out.println(RmbUnit.FEN.toFen(new String("0")));
        System.out.println(RmbUnit.FEN.toJiao(new String("0")));
        System.out.println(RmbUnit.FEN.toYuan(new String("0")));
        System.out.println(RmbUnit.FEN.toFen(new String("0")));
        System.out.println(RmbUnit.FEN.toJiao(new String("0")));
        System.out.println(RmbUnit.FEN.toYuan(new String("0")));

        System.out.println(RmbUnit.JIAO.toFen(new String("0")));
        System.out.println(RmbUnit.JIAO.toJiao(new String("0")));
        System.out.println(RmbUnit.JIAO.toYuan(new String("0")));
        System.out.println(RmbUnit.JIAO.toFen(new String("0")));
        System.out.println(RmbUnit.JIAO.toJiao(new String("0")));
        System.out.println(RmbUnit.JIAO.toYuan(new String("0")));

        System.out.println(RmbUnit.YUAN.toFen(new String("0")));
        System.out.println(RmbUnit.YUAN.toJiao(new String("0")));
        System.out.println(RmbUnit.YUAN.toYuan(new String("0")));
        System.out.println(RmbUnit.YUAN.toFen(new String("0")));
        System.out.println(RmbUnit.YUAN.toJiao(new String("0")));
        System.out.println(RmbUnit.YUAN.toYuan(new String("0")));

        System.out.println(RmbUnit.FEN.toFen(new String("100")));
        System.out.println(RmbUnit.FEN.toJiao(new String("100")));
        System.out.println(RmbUnit.FEN.toYuan(new String("100")));
        System.out.println(RmbUnit.FEN.toFen(new String("1")));
        System.out.println(RmbUnit.FEN.toJiao(new String("1")));
        System.out.println(RmbUnit.FEN.toYuan(new String("1")));

        System.out.println(RmbUnit.JIAO.toFen(new String("100")));
        System.out.println(RmbUnit.JIAO.toJiao(new String("100")));
        System.out.println(RmbUnit.JIAO.toYuan(new String("100")));
        System.out.println(RmbUnit.JIAO.toFen(new String("1")));
        System.out.println(RmbUnit.JIAO.toJiao(new String("1")));
        System.out.println(RmbUnit.JIAO.toYuan(new String("1")));
        System.out.println(RmbUnit.JIAO.toFen(new String("10")));
        System.out.println(RmbUnit.JIAO.toJiao(new String("10")));
        System.out.println(RmbUnit.JIAO.toYuan(new String("10")));

        System.out.println(RmbUnit.YUAN.toFen(new String("100")));
        System.out.println(RmbUnit.YUAN.toJiao(new String("100")));
        System.out.println(RmbUnit.YUAN.toYuan(new String("100")));
        System.out.println(RmbUnit.YUAN.toFen(new String("1")));
        System.out.println(RmbUnit.YUAN.toJiao(new String("1")));
        System.out.println(RmbUnit.YUAN.toYuan(new String("1")));
        System.out.println(RmbUnit.YUAN.toFen(new String("10")));
        System.out.println(RmbUnit.YUAN.toJiao(new String("10")));
        System.out.println(RmbUnit.YUAN.toYuan(new String("10")));

        System.out.println(RmbUnit.FEN.toString());
        System.out.println(RmbUnit.JIAO.toString());
        System.out.println(RmbUnit.YUAN.toString());
        
        System.out.println(RmbUnit.FEN.toJiao("10.0"));
        System.out.println(RmbUnit.FEN.toFen("0.0")); //此处会返回0.0
        
        System.out.println(RmbUnit.FEN.toJiao("haha"));//此处会报错
        
        System.exit(0);
        
    }

测试结果:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
100
10
1
1
0.1
0.01
1000
100
10
10
1
0.1
100
10
1
10000
1000
100
100
10
1
1000
100
10
FEN
JIAO
YUAN
1
0.0
Exception in thread "main" java.lang.NumberFormatException
    at java.math.BigDecimal.<init>(BigDecimal.java:459)
    at java.math.BigDecimal.<init>(BigDecimal.java:728)
    at a.jery.RmbUnit$1.toJiao(RmbUnit.java:13)
    at Test.main(Test.java:68)
原文地址:https://www.cnblogs.com/shoubianxingchen/p/5707027.html