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)
  • 相关阅读:
    Security » Authorization » 要求处理器中的依赖注入
    Security » Authorization » 基于自定义策略的授权
    Security » Authorization » 基于声明的授权
    Security » Authorization » 基于角色的授权
    CentOS下下载软件,不安装的方法
    rsync+sersync+inotify实现服务器间文件同步之一
    linux查看机器负载
    htpasswd建立和更新存储用户名、密码
    由异常掉电问题---谈xfs文件系统
    Flashcache基本使用及注意事项
  • 原文地址:https://www.cnblogs.com/shoubianxingchen/p/5707027.html
Copyright © 2011-2022 走看看