您好,登錄后才能下訂單哦!
這篇文章給大家介紹Java數(shù)學(xué)工具類MathUtil怎么用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
為大家分享了Java數(shù)學(xué)工具類MathUtil的具體代碼,供大家參考,具體內(nèi)容如下
package cn.xbz.util.math; import java.math.BigDecimal; /** * @title 數(shù)學(xué)計算工具類 * @description 提供常用的數(shù)值加減乘除計算 , 及多個數(shù)值的求和 , 平均值 , 最大最小值計算 */public class XMathUtil { /** 默認(rèn)的除法精確度 */ private static final int DEF_DIV_SCALE = 2; /** * 精確加法運(yùn)算 * @param v1 被加數(shù) * @param v2 加數(shù) * @return 兩個參數(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 兩個參數(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 兩個參數(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); } /** * ( 相對 )精確除法運(yùn)算 , 當(dāng)發(fā)生除不盡情況時 , 精確到 小數(shù)點(diǎn)以后2位 , 以后數(shù)字四舍五入 * @param v1 被除數(shù) * @param v2 除數(shù) * @return 兩個參數(shù)的商(BigDecimal) */ public static BigDecimal pide(BigDecimal v1, BigDecimal v2) { return v1.pide(v2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP); } /** * ( 相對 )精確除法運(yùn)算 . 當(dāng)發(fā)生除不盡情況時 , 由scale參數(shù)指 定精度 , 以后數(shù)字四舍五入 * @param v1 被除數(shù) * @param v2 除數(shù) * @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位 * @return 兩個參數(shù)的商(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("除數(shù)不能為0"); } if (scale < 0) { throw new IllegalArgumentException("精確度不能小于0"); } return v1.pide(v2, scale, BigDecimal.ROUND_HALF_UP); } /** * 精確加法運(yùn)算 * @param v1 被加數(shù) * @param v2 加數(shù) * @return 兩個參數(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 兩個參數(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 兩個參數(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)); } /** * ( 相對 )精確除法運(yùn)算 , 當(dāng)發(fā)生除不盡情況時 , 精確到 小數(shù)點(diǎn)以后2位 , 以后數(shù)字四舍五入 * @param v1 被除數(shù) * @param v2 除數(shù) * @return 兩個參數(shù)的商(String) */ public static String pide(String v1, String v2) { return pide(v1, v2, DEF_DIV_SCALE); } /** * ( 相對 )精確除法運(yùn)算 . 當(dāng)發(fā)生除不盡情況時 , 由scale參數(shù)指 定精度 , 以后數(shù)字四舍五入 * @param v1 被除數(shù) * @param v2 除數(shù) * @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位 * @return 兩個參數(shù)的商(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)); } /** * 精確加法運(yùn)算 , 計算多個數(shù)值總和 , 若其中有null值則忽略 * @param valList 被加數(shù)集合 * @return 兩個參數(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)算 , 計算多個數(shù)值總和 , 若其中有null值則忽略 * @param valList 被加數(shù)集合 * @return 兩個參數(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 pide(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 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; }}
關(guān)于Java數(shù)學(xué)工具類MathUtil怎么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。