zoukankan      html  css  js  c++  java
  • 货币单位类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)
  • 相关阅读:
    Bank5
    面向对象特征之多态性
    继承性与super的使用练习
    阿里云服务器被挖矿minerd入侵的解决办法
    ES Pipeline Aggregation(管道聚合)
    Elasticsearch索引自动套用模板
    docker.service启动失败:Unit not found的原因及解决办法
    Kubernetes集群资源监控
    Kunbernetes-基于NFS的存储
    Kubernetes核心技术Helm
  • 原文地址:https://www.cnblogs.com/shoubianxingchen/p/5707027.html
Copyright © 2011-2022 走看看