zoukankan      html  css  js  c++  java
  • java BigDecimal工具类

    package com.core.calculate;
    
    import java.math.BigDecimal;
    import java.text.DecimalFormat;
    
    /**
     * Created by tangxin on 2017/1/6 0006.
     * 如有问题,欢迎提出更正
     */
    public class BigNum {
    
        public static final String BIG_NUM_FMT_COMMA = "#,###,###,###,###,###,##0.00";//千位分隔符 方便查看金额具体大小
        public static final String BIG_NUM_FMT = "##################0.00";//不带千位分隔符
        public static final String BIG_NUM_HUNDRED = "100";//100常量
        public static final int BIG_NUM_SCALE = 2;//保留两位小数
    
    
        private BigNum(){
    
        }
        /**
         * 高精度加法
         * @param v1
         * @param v2
         * @return
         */
        public static BigDecimal add(String v1, String v2) {
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.add(b2);
        }
    
        /**
         * 高精度减法
         * @param v1
         * @param v2
         * @return
         */
        public static BigDecimal sub(String v1,String v2){
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.subtract(b2);
        }
    
        /**
         * 高精度乘法
         * @param v1
         * @param v2
         * @return
         */
        public static BigDecimal mul(String v1,String v2){
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.multiply(b2);
        }
    
        /**
         * 高精度除法
         * @param v1
         * @param v2
         * @param scale
         * @return
         */
        public static BigDecimal div(String v1, String v2, int scale) {
            if (scale < 0) {
                throw new IllegalArgumentException(
                        "The scale must be a positive integer or zero");
            }
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP);
        }
    
        /**
         * 保留小数位
         * @param v
         * @param scale
         * @return
         */
        public static BigDecimal round(String v, int scale) {
            if (scale < 0) {
                throw new IllegalArgumentException(
                        "The scale must be a positive integer or zero");
            }
            BigDecimal b = new BigDecimal(v);
            BigDecimal one = new BigDecimal("1");
            return b.divide(one, scale, BigDecimal.ROUND_HALF_UP);
        }
    
        /**
         * 分转换成元
         * @param v
         * @return
         */
        public static BigDecimal penny2dollar(String v){
            BigDecimal s = div(v,"100",2);//保留两位小数
            return s;
        }
    
        /**
         * 元转换成分
         * @param v
         * @return
         */
        public static BigDecimal dollar2penny(String v){
            return mul(v, "100");
        }
    
        /**
         * 格式化金额
         * 千位分隔符 方便查看金额具体大小 BIG_NUM_FMT = "#,###,###,###,###,###,##0.00"
         * 精确两位小数 .99 -> 0.99
         *             1111111.985 -> 1,111,111.99
         * @param v
         * @return
         */
        public static String formatNumber(String v){
            return formatNumber(v,BIG_NUM_FMT_COMMA);
        }
    
        /**
         * 格式化金额
         * @param v
         * @param pattern BigNum类中的常量 BIG_NUM_FMT_COMMA,BIG_NUM_FMT
         * @return
         */
        public static String formatNumber(String v,String pattern) {
            return new DecimalFormat(pattern).format(new BigDecimal(v));
        }
    
        public static void main(String[] args) {
            System.out.println(BigNum.add("1.99","20.999"));
            System.out.println(BigNum.sub("1.99","20.999"));
            String s = "1111111.985";
            String a = BigNum.formatNumber(s);
            System.out.println(s);
            System.out.println(a);
        }
    }
  • 相关阅读:
    Java知识回顾 (2) Java 修饰符
    SpringMVC和Springboot的区别
    VS Supercharger插件的破解
    Spring3.1新属性管理API:PropertySource、Environment、Profile
    如何进行接口测试
    commons-lang3中DateUtils类方法介绍
    springCloud com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
    rabbitmq 连接报错 An unexpected connection driver error occured
    rabbitmq的安装与使用
    mysql5.7 mysql库下面的user表没有password字段无法修改密码
  • 原文地址:https://www.cnblogs.com/fofawubian/p/6262871.html
Copyright © 2011-2022 走看看