zoukankan      html  css  js  c++  java
  • 精确计算工具类,提供加减乘除的计算

    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"));
        }
    }
    

      

  • 相关阅读:
    Lock wait timeout exceeded; try restarting transaction
    数据库三大范式
    数据库内联和外联
    [PHP相关教程] laravel5.1学习手册[一]基本开发环境配置
    轻松实现Ecshop商城多语言切换
    php 异步提交表单
    [解决方法] php大form用post方式传递数据过多被截取的问题
    HTML5日期输入类型(date)
    PHP 数字转化为自定义长度的字符串[前插后入]
    网站应用微信登录开发指南
  • 原文地址:https://www.cnblogs.com/linjiqin/p/5550760.html
Copyright © 2011-2022 走看看