• 精确计算工具类,提供加减乘除的计算


    package com.ljq.durian.common.util;
    
    import java.math.BigDecimal;
    import java.math.MathContext;
    import java.math.RoundingMode;
    
    /**
     * 精确计算工具类,提供加减乘除的计算
     *
     * @author jqlin
     */
    public class CompuUtils {
        /** 常量--0 */
        public static final int ZERO = 0;
        /** 常量--1 */
        public static final int ONE = 1;
        /** 常量-- -1 */
        public static final int MINUS_ONE = -1;
    
    
        /**
         * 大小比较
         * 
         * @param a
         * @param b
         * @return 返回1, 表示a大于b <br/>
         *         返回0 ,表示a等于b <br/>
         *         返回-1,表示a小于b
         * @author jqlin
         */
        public static int compareTo(String a, String b) {
            return new BigDecimal(a).compareTo(new BigDecimal(b));
        }
    
        /**
         * 加法运算
         * 
         * @param a 被加数
         * @param b 加数
         * @author jqlin
         */
        public static BigDecimal add(String a, String b) {
            MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
            return new BigDecimal(a).add(new BigDecimal(b), mc);
        }
    
        /**
         * 累加运算
         * 
         * @param vals
         * @return
         * @author jqlin
         */
        public static int add(int... vals) {
            if (vals == null || vals.length <= 0) {
                return 0;
            }
    
            int sum = 0;
            for (int val : vals) {
                sum = sum + val;
            }
    
            return sum;
        }
    
        /**
         * 累加运算
         * 
         * @param vals
         * @return
         * @author jqlin
         */
        public static long add(long... vals) {
            if (vals == null || vals.length <= 0) {
                return 0L;
            }
    
            long sum = 0L;
            for (long val : vals) {
                sum = sum + val;
            }
    
            return sum;
        }
    
        /**
         * 减法运算
         * 
         * @param a 被减数
         * @param b 减数
         * @author jqlin
         */
        public static BigDecimal subtract(String a, String b) {
            MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
            return new BigDecimal(a).subtract(new BigDecimal(b), mc);
        }
    
        /**
         * 乘法运算
         * 
         * @param a 被乘数
         * @param b 乘数
         * @author jqlin
         */
        public static BigDecimal multiply(String a, String b) {
            MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
            return new BigDecimal(a).multiply(new BigDecimal(b), mc);
        }
    
        /**
         * 除法运算
         * 
         * @param a 被除数
         * @param b 除数
         * @author jqlin
         */
        public static BigDecimal divide(String a, String b) {
            return new BigDecimal(a).divide(new BigDecimal(b), 20, BigDecimal.ROUND_HALF_UP);
        }
    
        public static void main(String[] args) {
            System.out.println(divide("10", "4"));
        }
    }
    

      

  • 相关阅读:
    Python NameError: name 'include' is not defined [closed]
    Python3 venv 创建虚拟环境
    python编程:从入门到实践读书笔记(一)
    kafka(2.2.1)(kerberos+LDAP+Sentry)访问使用
    实现Base64解码和命令分发器
    装饰器器应用及用途
    __slots__和运算符重载中的反向方法
    python插件化开发
    python分发包管理
    SocketServer模块
  • 原文地址:https://www.cnblogs.com/linjiqin/p/5550760.html
Copyright © 2020-2023  润新知