Java中MathUtil數(shù)學(xué)工具類挺好使用,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

公司主營(yíng)業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出臨汾免費(fèi)做網(wǎng)站回饋大家。
具體內(nèi)容如下
package cn.xbz.util.math;
import java.math.BigDecimal;
/**
* @title 數(shù)學(xué)計(jì)算工具類
* @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;
}
}看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
標(biāo)題名稱:Java中MathUtil數(shù)學(xué)工具類挺好使用
轉(zhuǎn)載來于:http://chinadenli.net/article2/ppcjic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、動(dòng)態(tài)網(wǎng)站、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、虛擬主機(jī)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)