Java数学工具类MathUtil怎么用

发布时间:2021-10-13 15:29:55 作者:柒染
来源:亿速云 阅读:108

这篇文章给大家介绍Java数学工具类MathUtil怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

为大家分享了Java数学工具类MathUtil的具体代码,供大家参考,具体内容如下

package cn.xbz.util.math; import java.math.BigDecimal; /** * @title 数学计算工具类 * @description 提供常用的数值加减乘除计算 , 及多个数值的求和 , 平均值 , 最大最小值计算 */public class XMathUtil {  /** 默认的除法精确度 */  private static final int DEF_DIV_SCALE = 2;   /**   * 精确加法运算   * @param v1 被加数   * @param v2 加数   * @return 两个参数的和(BigDecimal)   */  public static BigDecimal add(BigDecimal v1, BigDecimal v2) {    if (null == v1) {      v1 = BigDecimal.ZERO;    }    if (null == v2) {      v2 = BigDecimal.ZERO;    }    return v1.add(v2);  }   /**   * 精确减法运算   * @param v1 被减数   * @param v2 减数   * @return 两个参数的差(BigDecimal)   */  public static BigDecimal subtract(BigDecimal v1, BigDecimal v2) {    if (null == v1) {      v1 = BigDecimal.ZERO;    }    if (null == v2) {      v2 = BigDecimal.ZERO;    }    return v1.subtract(v2);  }   /**   * 精确乘法运算   * @param v1 被乘数   * @param v2 乘数   * @return 两个参数的积(BigDecimal)   */  public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) {    if (null == v1) {      v1 = BigDecimal.ONE;    }    if (null == v2) {      v2 = BigDecimal.ONE;    }    return v1.multiply(v2);  }   /**   * ( 相对 )精确除法运算 , 当发生除不尽情况时 , 精确到 小数点以后2位 , 以后数字四舍五入   * @param v1 被除数   * @param v2 除数   * @return 两个参数的商(BigDecimal)   */  public static BigDecimal pide(BigDecimal v1, BigDecimal v2) {    return v1.pide(v2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP);  }   /**   * ( 相对 )精确除法运算 . 当发生除不尽情况时 , 由scale参数指 定精度 , 以后数字四舍五入   * @param v1 被除数   * @param v2 除数   * @param scale 表示表示需要精确到小数点以后几位   * @return 两个参数的商(BigDecimal)   */  public static BigDecimal pide(BigDecimal v1, BigDecimal v2, Integer scale) {    if (null == v1) {      return BigDecimal.ZERO;    }    if (null == v2) {      v2 = BigDecimal.ONE;    }     if (v2.compareTo(BigDecimal.ZERO) == 0) {      throw new IllegalArgumentException("除数不能为0");    }     if (scale < 0) {      throw new IllegalArgumentException("精确度不能小于0");    }     return v1.pide(v2, scale, BigDecimal.ROUND_HALF_UP);  }   /**   * 精确加法运算   * @param v1 被加数   * @param v2 加数   * @return 两个参数的和(String)   */  public static String add(String v1, String v2) {    if (isBlank(v1)) {      v1 = "0";    }    if (isBlank(v2)) {      v2 = "0";    }    BigDecimal b1 = new BigDecimal(v1.trim());    BigDecimal b2 = new BigDecimal(v2.trim());    return String.valueOf(add(b1, b2));  }    /**   * 精确减法运算   * @param v1 被减数   * @param v2 减数   * @return 两个参数的差(String)   */  public static String subtract(String v1, String v2) {    if (isBlank(v1)) {      v1 = "0";    }    if (isBlank(v2)) {      v2 = "0";    }    BigDecimal b1 = new BigDecimal(v1.trim());    BigDecimal b2 = new BigDecimal(v2.trim());    return String.valueOf(subtract(b1, b2));  }   /**   * 精确乘法运算   * @param v1 被乘数   * @param v2 乘数   * @return 两个参数的积(String)   */  public static String multiply(String v1, String v2) {    if (isBlank(v1)) {      v1 = "1";    }    if (isBlank(v2)) {      v2 = "1";    }    BigDecimal b1 = new BigDecimal(v1.trim());    BigDecimal b2 = new BigDecimal(v2.trim());    return String.valueOf(multiply(b1, b2));  }   /**   * ( 相对 )精确除法运算 , 当发生除不尽情况时 , 精确到 小数点以后2位 , 以后数字四舍五入   * @param v1 被除数   * @param v2 除数   * @return 两个参数的商(String)   */  public static String pide(String v1, String v2) {    return pide(v1, v2, DEF_DIV_SCALE);  }   /**   * ( 相对 )精确除法运算 . 当发生除不尽情况时 , 由scale参数指 定精度 , 以后数字四舍五入   * @param v1 被除数   * @param v2 除数   * @param scale 表示表示需要精确到小数点以后几位   * @return 两个参数的商(String)   */  public static String pide(String v1, String v2, Integer scale) {    if (null == v1) {      return "0";    }    if (null == v2) {      v2 = "1";    }    BigDecimal b1 = new BigDecimal(v1.trim());    BigDecimal b2 = new BigDecimal(v2.trim());    return String.valueOf(pide(b1, b2, scale));  }   /**   * 精确加法运算 , 计算多个数值总和 , 若其中有null值则忽略   * @param valList 被加数集合   * @return 两个参数的和(BigDecimal)   */  public static BigDecimal sum(BigDecimal v1, BigDecimal... valList) {    if (null == v1) {      v1 = BigDecimal.ZERO;    }    if (null == valList || valList.length == 0) {      return v1;    }    for (BigDecimal val : valList) {      if (null != val) {        v1 = v1.add(val);      }    }    return v1;  }   /**   * 精确加法运算 , 计算多个数值总和 , 若其中有null值则忽略   * @param valList 被加数集合   * @return 两个参数的和(String)   */  public static String sum(String v1, String... valList) {    if (isBlank(v1)) {      v1 = "0";    }    if (null == valList || valList.length == 0) {      return v1;    }    BigDecimal b1 = new BigDecimal(v1.trim());    for (String val : valList) {      if (!isBlank(val)) {        b1 = add(b1, new BigDecimal(val.trim()));      }    }    return String.valueOf(b1);  }   /**   * 平均数   * @param valList   * @return   */  public static BigDecimal avg(BigDecimal... valList) {    if (null != valList && valList.length != 0) {      return pide(sum(BigDecimal.ZERO, valList), new BigDecimal(valList.length));    }    return BigDecimal.ZERO;  }   /**   * 平均数   * @param valList   * @return   */  public static String avg(String... valList) {    if (null != valList && valList.length != 0) {      return pide(sum("0", valList), String.valueOf(valList.length));    }    return "0";  }   /**   * 最大值   * @param v1   * @param valList   * @return   */  public static BigDecimal max(BigDecimal v1, BigDecimal... valList) {    BigDecimal max = v1;    if (null == valList || valList.length == 0) {      return max;    }    for (BigDecimal val : valList) {      if (null != val && val.compareTo(max) > 0) {        max = val;      }    }    return max;  }   /**   * 最大值   * @param valList   * @return   */  public static BigDecimal maxArr(BigDecimal... valList) {    if (null == valList || valList.length == 0) {      return null;    }     return max(valList[0], valList);  }   /**   * 最小值   * @param v1   * @param valList   * @return   */  public static BigDecimal min(BigDecimal v1, BigDecimal... valList) {    BigDecimal min = v1;    if (null == valList || valList.length == 0) {      return min;    }    for (BigDecimal val : valList) {      if (null != val && val.compareTo(min) < 0) {        min = val;      }    }    return min;  }   /**   * 最小值   * @param valList   * @return   */  public static BigDecimal minArr(BigDecimal... valList) {    if (null == valList || valList.length == 0) {      return null;    }    return min(valList[0], valList);  }   /**   * 最大值   * @param v1   * @param valList   * @return   */  public static String max(String v1, String... valList) {    if (isBlank(v1)) {      return null;    }    if (null == valList || valList.length == 0) {      return v1;    }    BigDecimal maxBd = new BigDecimal(v1.trim());     for (String val : valList) {      if (!isBlank(val) && new BigDecimal(val).compareTo(maxBd) > 0) {        maxBd = new BigDecimal(val);      }    }    return String.valueOf(maxBd);  }   /**   * 最大值   * @param valList   * @return   */  public static String maxArr(String... valList) {    if (null == valList || valList.length == 0) {      return null;    }    return max(valList[0], valList);  }   /**   * 最小值   * @param v1   * @param valList   * @return   */  public static String min(String v1, String... valList) {    if (isBlank(v1)) {      return null;    }    if (null == valList || valList.length == 0) {      return v1;    }    BigDecimal minBd = new BigDecimal(v1.trim());     for (String val : valList) {      if (!isBlank(val) && new BigDecimal(val).compareTo(minBd) < 0) {        minBd = new BigDecimal(val);      }    }    return String.valueOf(minBd);  }   /**   * 最小值   * @param valList   * @return   */  public static String minArr(String... valList) {    if (null == valList || valList.length == 0) {      return null;    }    return min(valList[0], valList);  }   /**   * 判断字符串是否为空(不依赖第三方)   * @param str   * @return   */  private static boolean isBlank(String str) {    return null == str || str.trim().length() == 0;  }}

关于Java数学工具类MathUtil怎么用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. Java中MathUtil数学工具类挺好使用
  2. java中Math数学工具类的作用是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:C#语法中泛型的应用是怎样的

下一篇:Object类有几种方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》