zoukankan      html  css  js  c++  java
  • 金钱转换

    public class MoneyFormatUtil {
      //分转换成元
        public static String format_fen_as_yuan(int money_fen) {
            float money_yuan = new BigDecimal(money_fen / 100f).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
            return format(money_yuan);
        }
    
        /**
         * @param @param  money
         * @param @return
         * @return String
         * @throws
         * @Description: 格式化,保留小数点后两位
         */
        public static String format(float money_yuan) {
            String str = money_yuan + "";
            int pos = str.indexOf(".");
            if (pos < 0)
                return str;
            else {
                String pre = str.substring(0, pos);
                String last = str.substring(pos + 1);
                try {
                    int xiaoshu = Integer.parseInt(last);
                    if (xiaoshu == 0) {
                        return pre;
                    }
                } catch (NumberFormatException ex) {
                    ex.printStackTrace();
                }
            }
            DecimalFormat df = new DecimalFormat("##0.00");
            return df.format(money_yuan);
        }
    }
    
    //元转换为分 用法Money.fromYuan(yuan).fen();
    public class Money implements Serializable, Parcelable {
        BigDecimal value_bigDecimal;
        int value_fen;
        float value_yuan;
    
        public Money(int value_fen) {
            this.value_fen = value_fen;
            value_bigDecimal = new BigDecimal(value_fen);
            this.value_yuan = value_bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
        }
    
        public Money(Parcel in) {
            this(in.readInt());
        }
    
        public static Money fromFen(String fen) {
            return new Money(Integer.parseInt(fen));
        }
    
        public static Money fromFen(int fen) {
            return new Money(fen);
        }
    
        public static Money fromYuan(String yuan_money_str) {
            float money_shishou_yuan = Float.parseFloat(yuan_money_str);
            return fromYuan(money_shishou_yuan);
        }
     
        public static Money fromYuan(float money_shishou_yuan) {
            int fen = new BigDecimal(money_shishou_yuan).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).intValue();
            Money money = new Money(fen);
            return money;
        }
    
        public int fen() {
            return value_fen;
        }
    
        public float yuan() {
            return value_yuan;
        }
    
        public BigDecimal toBigDecimalValue() {
            return value_bigDecimal;
        }
    
        /**
         * 显示金额,比如: 3.1 (元,不包含单位)
         *
         * @return
         */
        public String toStringAsYuan() {
            return MoneyFormatUtil.format_fen_as_yuan(value_fen);
        }
    
        public Money multiply(BigDecimal num) {
            return new Money(new BigDecimal(value_fen).multiply(num).intValue());
        }
    
        public Money divide(BigDecimal num) {
            return new Money(new BigDecimal(value_fen).divide(num).intValue());
        }
    
        public Money add(BigDecimal num) {
            return new Money(new BigDecimal(value_fen).add(num).intValue());
        }
    
        public Money subtract(BigDecimal num) {
            return new Money(new BigDecimal(value_fen).subtract(num).intValue());
        }
    
        @Override
        public String toString() {
            return toStringAsYuan();
        }
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeInt(value_fen);
        }
    
        public static final Parcelable.Creator<Money> CREATOR = new Parcelable.Creator<Money>() {
            public Money createFromParcel(Parcel in) {
                return new Money(in);
            }
    
            public Money[] newArray(int size) {
                return new Money[size];
            }
        };
    
    }
     
  • 相关阅读:
    线段树扫描线求矩形面积并
    BZOJ-1103 [POI2007]大都市meg 【DFS序+树状数组】
    安徽大学第九届程序设计竞赛决赛题解
    如何解决Vue.js里面noVNC的截图问题(2)——蛋疼的cookies验证和node.js的websocket代理
    如何解决Vue.js里面noVNC的截图问题(1)——论可以跨域的webSocket
    从技术人视角看闪电网络之作用和局限性,以及一些问题的回答
    从技术人视角看闪电网络之闪电路由
    从技术人视角看闪电网络之微支付通道
    微服务化的大坑之一:当dubbo神器碰上共用注册中心和错误的暴露接口
    Fun论设计模式之1:简单工厂模式(Factory Pattern)
  • 原文地址:https://www.cnblogs.com/xinmengwuheng/p/5788909.html
Copyright © 2011-2022 走看看