Java数学工具类MathUtil详解
本文实例为大家分享了Java数学工具类MathUtil的具体代码,供大家参考,具体内容如下
packagecn.xbz.util.math; importjava.math.BigDecimal; /** *@title数学计算工具类 *@description提供常用的数值加减乘除计算,及多个数值的求和,平均值,最大最小值计算 */ publicclassXMathUtil{ /**默认的除法精确度*/ privatestaticfinalintDEF_DIV_SCALE=2; /** *精确加法运算 *@paramv1被加数 *@paramv2加数 *@return两个参数的和(BigDecimal) */ publicstaticBigDecimaladd(BigDecimalv1,BigDecimalv2){ if(null==v1){ v1=BigDecimal.ZERO; } if(null==v2){ v2=BigDecimal.ZERO; } returnv1.add(v2); } /** *精确减法运算 *@paramv1被减数 *@paramv2减数 *@return两个参数的差(BigDecimal) */ publicstaticBigDecimalsubtract(BigDecimalv1,BigDecimalv2){ if(null==v1){ v1=BigDecimal.ZERO; } if(null==v2){ v2=BigDecimal.ZERO; } returnv1.subtract(v2); } /** *精确乘法运算 *@paramv1被乘数 *@paramv2乘数 *@return两个参数的积(BigDecimal) */ publicstaticBigDecimalmultiply(BigDecimalv1,BigDecimalv2){ if(null==v1){ v1=BigDecimal.ONE; } if(null==v2){ v2=BigDecimal.ONE; } returnv1.multiply(v2); } /** *(相对)精确除法运算,当发生除不尽情况时,精确到小数点以后2位,以后数字四舍五入 *@paramv1被除数 *@paramv2除数 *@return两个参数的商(BigDecimal) */ publicstaticBigDecimaldivide(BigDecimalv1,BigDecimalv2){ returnv1.divide(v2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP); } /** *(相对)精确除法运算.当发生除不尽情况时,由scale参数指定精度,以后数字四舍五入 *@paramv1被除数 *@paramv2除数 *@paramscale表示表示需要精确到小数点以后几位 *@return两个参数的商(BigDecimal) */ publicstaticBigDecimaldivide(BigDecimalv1,BigDecimalv2,Integerscale){ if(null==v1){ returnBigDecimal.ZERO; } if(null==v2){ v2=BigDecimal.ONE; } if(v2.compareTo(BigDecimal.ZERO)==0){ thrownewIllegalArgumentException("除数不能为0"); } if(scale<0){ thrownewIllegalArgumentException("精确度不能小于0"); } returnv1.divide(v2,scale,BigDecimal.ROUND_HALF_UP); } /** *精确加法运算 *@paramv1被加数 *@paramv2加数 *@return两个参数的和(String) */ publicstaticStringadd(Stringv1,Stringv2){ if(isBlank(v1)){ v1="0"; } if(isBlank(v2)){ v2="0"; } BigDecimalb1=newBigDecimal(v1.trim()); BigDecimalb2=newBigDecimal(v2.trim()); returnString.valueOf(add(b1,b2)); } /** *精确减法运算 *@paramv1被减数 *@paramv2减数 *@return两个参数的差(String) */ publicstaticStringsubtract(Stringv1,Stringv2){ if(isBlank(v1)){ v1="0"; } if(isBlank(v2)){ v2="0"; } BigDecimalb1=newBigDecimal(v1.trim()); BigDecimalb2=newBigDecimal(v2.trim()); returnString.valueOf(subtract(b1,b2)); } /** *精确乘法运算 *@paramv1被乘数 *@paramv2乘数 *@return两个参数的积(String) */ publicstaticStringmultiply(Stringv1,Stringv2){ if(isBlank(v1)){ v1="1"; } if(isBlank(v2)){ v2="1"; } BigDecimalb1=newBigDecimal(v1.trim()); BigDecimalb2=newBigDecimal(v2.trim()); returnString.valueOf(multiply(b1,b2)); } /** *(相对)精确除法运算,当发生除不尽情况时,精确到小数点以后2位,以后数字四舍五入 *@paramv1被除数 *@paramv2除数 *@return两个参数的商(String) */ publicstaticStringdivide(Stringv1,Stringv2){ returndivide(v1,v2,DEF_DIV_SCALE); } /** *(相对)精确除法运算.当发生除不尽情况时,由scale参数指定精度,以后数字四舍五入 *@paramv1被除数 *@paramv2除数 *@paramscale表示表示需要精确到小数点以后几位 *@return两个参数的商(String) */ publicstaticStringdivide(Stringv1,Stringv2,Integerscale){ if(null==v1){ return"0"; } if(null==v2){ v2="1"; } BigDecimalb1=newBigDecimal(v1.trim()); BigDecimalb2=newBigDecimal(v2.trim()); returnString.valueOf(divide(b1,b2,scale)); } /** *精确加法运算,计算多个数值总和,若其中有null值则忽略 *@paramvalList被加数集合 *@return两个参数的和(BigDecimal) */ publicstaticBigDecimalsum(BigDecimalv1,BigDecimal...valList){ if(null==v1){ v1=BigDecimal.ZERO; } if(null==valList||valList.length==0){ returnv1; } for(BigDecimalval:valList){ if(null!=val){ v1=v1.add(val); } } returnv1; } /** *精确加法运算,计算多个数值总和,若其中有null值则忽略 *@paramvalList被加数集合 *@return两个参数的和(String) */ publicstaticStringsum(Stringv1,String...valList){ if(isBlank(v1)){ v1="0"; } if(null==valList||valList.length==0){ returnv1; } BigDecimalb1=newBigDecimal(v1.trim()); for(Stringval:valList){ if(!isBlank(val)){ b1=add(b1,newBigDecimal(val.trim())); } } returnString.valueOf(b1); } /** *平均数 *@paramvalList *@return */ publicstaticBigDecimalavg(BigDecimal...valList){ if(null!=valList&&valList.length!=0){ returndivide(sum(BigDecimal.ZERO,valList),newBigDecimal(valList.length)); } returnBigDecimal.ZERO; } /** *平均数 *@paramvalList *@return */ publicstaticStringavg(String...valList){ if(null!=valList&&valList.length!=0){ returndivide(sum("0",valList),String.valueOf(valList.length)); } return"0"; } /** *最大值 *@paramv1 *@paramvalList *@return */ publicstaticBigDecimalmax(BigDecimalv1,BigDecimal...valList){ BigDecimalmax=v1; if(null==valList||valList.length==0){ returnmax; } for(BigDecimalval:valList){ if(null!=val&&val.compareTo(max)>0){ max=val; } } returnmax; } /** *最大值 *@paramvalList *@return */ publicstaticBigDecimalmaxArr(BigDecimal...valList){ if(null==valList||valList.length==0){ returnnull; } returnmax(valList[0],valList); } /** *最小值 *@paramv1 *@paramvalList *@return */ publicstaticBigDecimalmin(BigDecimalv1,BigDecimal...valList){ BigDecimalmin=v1; if(null==valList||valList.length==0){ returnmin; } for(BigDecimalval:valList){ if(null!=val&&val.compareTo(min)<0){ min=val; } } returnmin; } /** *最小值 *@paramvalList *@return */ publicstaticBigDecimalminArr(BigDecimal...valList){ if(null==valList||valList.length==0){ returnnull; } returnmin(valList[0],valList); } /** *最大值 *@paramv1 *@paramvalList *@return */ publicstaticStringmax(Stringv1,String...valList){ if(isBlank(v1)){ returnnull; } if(null==valList||valList.length==0){ returnv1; } BigDecimalmaxBd=newBigDecimal(v1.trim()); for(Stringval:valList){ if(!isBlank(val)&&newBigDecimal(val).compareTo(maxBd)>0){ maxBd=newBigDecimal(val); } } returnString.valueOf(maxBd); } /** *最大值 *@paramvalList *@return */ publicstaticStringmaxArr(String...valList){ if(null==valList||valList.length==0){ returnnull; } returnmax(valList[0],valList); } /** *最小值 *@paramv1 *@paramvalList *@return */ publicstaticStringmin(Stringv1,String...valList){ if(isBlank(v1)){ returnnull; } if(null==valList||valList.length==0){ returnv1; } BigDecimalminBd=newBigDecimal(v1.trim()); for(Stringval:valList){ if(!isBlank(val)&&newBigDecimal(val).compareTo(minBd)<0){ minBd=newBigDecimal(val); } } returnString.valueOf(minBd); } /** *最小值 *@paramvalList *@return */ publicstaticStringminArr(String...valList){ if(null==valList||valList.length==0){ returnnull; } returnmin(valList[0],valList); } /** *判断字符串是否为空(不依赖第三方) *@paramstr *@return */ privatestaticbooleanisBlank(Stringstr){ returnnull==str||str.trim().length()==0; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。