日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java 加减乘除 工具类_Java数学工具类MathUtil详解

發(fā)布時(shí)間:2024/4/20 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 加减乘除 工具类_Java数学工具类MathUtil详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

package cn.xbz.util.math;

import java.math.BigDecimal;

/**

* @title 數(shù)學(xué)計(jì)算工具類(lèi)

* @description 提供常用的數(shù)值加減乘除計(jì)算 , 及多個(gè)數(shù)值的求和 , 平均值 , 最大最小值計(jì)算

*/

public class XMathUtil {

/** 默認(rèn)的除法精確度 */

private static final int DEF_DIV_SCALE = 2;

/**

* 精確加法運(yùn)算

* @param v1 被加數(shù)

* @param v2 加數(shù)

* @return 兩個(gè)參數(shù)的和(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);

}

/**

* 精確減法運(yùn)算

* @param v1 被減數(shù)

* @param v2 減數(shù)

* @return 兩個(gè)參數(shù)的差(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);

}

/**

* 精確乘法運(yùn)算

* @param v1 被乘數(shù)

* @param v2 乘數(shù)

* @return 兩個(gè)參數(shù)的積(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);

}

/**

* ( 相對(duì) )精確除法運(yùn)算 , 當(dāng)發(fā)生除不盡情況時(shí) , 精確到 小數(shù)點(diǎn)以后2位 , 以后數(shù)字四舍五入

* @param v1 被除數(shù)

* @param v2 除數(shù)

* @return 兩個(gè)參數(shù)的商(BigDecimal)

*/

public static BigDecimal divide(BigDecimal v1, BigDecimal v2) {

return v1.divide(v2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP);

}

/**

* ( 相對(duì) )精確除法運(yùn)算 . 當(dāng)發(fā)生除不盡情況時(shí) , 由scale參數(shù)指 定精度 , 以后數(shù)字四舍五入

* @param v1 被除數(shù)

* @param v2 除數(shù)

* @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位

* @return 兩個(gè)參數(shù)的商(BigDecimal)

*/

public static BigDecimal divide(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("除數(shù)不能為0");

}

if (scale < 0) {

throw new IllegalArgumentException("精確度不能小于0");

}

return v1.divide(v2, scale, BigDecimal.ROUND_HALF_UP);

}

/**

* 精確加法運(yùn)算

* @param v1 被加數(shù)

* @param v2 加數(shù)

* @return 兩個(gè)參數(shù)的和(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));

}

/**

* 精確減法運(yùn)算

* @param v1 被減數(shù)

* @param v2 減數(shù)

* @return 兩個(gè)參數(shù)的差(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));

}

/**

* 精確乘法運(yùn)算

* @param v1 被乘數(shù)

* @param v2 乘數(shù)

* @return 兩個(gè)參數(shù)的積(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));

}

/**

* ( 相對(duì) )精確除法運(yùn)算 , 當(dāng)發(fā)生除不盡情況時(shí) , 精確到 小數(shù)點(diǎn)以后2位 , 以后數(shù)字四舍五入

* @param v1 被除數(shù)

* @param v2 除數(shù)

* @return 兩個(gè)參數(shù)的商(String)

*/

public static String divide(String v1, String v2) {

return divide(v1, v2, DEF_DIV_SCALE);

}

/**

* ( 相對(duì) )精確除法運(yùn)算 . 當(dāng)發(fā)生除不盡情況時(shí) , 由scale參數(shù)指 定精度 , 以后數(shù)字四舍五入

* @param v1 被除數(shù)

* @param v2 除數(shù)

* @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位

* @return 兩個(gè)參數(shù)的商(String)

*/

public static String divide(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(divide(b1, b2, scale));

}

/**

* 精確加法運(yùn)算 , 計(jì)算多個(gè)數(shù)值總和 , 若其中有null值則忽略

* @param valList 被加數(shù)集合

* @return 兩個(gè)參數(shù)的和(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;

}

/**

* 精確加法運(yùn)算 , 計(jì)算多個(gè)數(shù)值總和 , 若其中有null值則忽略

* @param valList 被加數(shù)集合

* @return 兩個(gè)參數(shù)的和(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);

}

/**

* 平均數(shù)

* @param valList

* @return

*/

public static BigDecimal avg(BigDecimal... valList) {

if (null != valList && valList.length != 0) {

return divide(sum(BigDecimal.ZERO, valList), new BigDecimal(valList.length));

}

return BigDecimal.ZERO;

}

/**

* 平均數(shù)

* @param valList

* @return

*/

public static String avg(String... valList) {

if (null != valList && valList.length != 0) {

return divide(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;

}

}

總結(jié)

以上是生活随笔為你收集整理的java 加减乘除 工具类_Java数学工具类MathUtil详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。