概述
Java实现数学基本运算与小数格式化工具类-NumberUtil
NumberUtil.java
package com.mesnac.sys.util;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 功能说明:数学基本运算与小数格式化工具类
* 修改说明:
* @author zhenglb
* @date 2020年4月30日 上午9:16:46
* @version 0.1
*/
public class NumberUtil {
private static final int DEF_DIV_SCALE = 10;
/**
* 功能说明:数据格式话,返回字符串
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:36:29
* @param d double型数据
* @param comma
* @return
*/
public static String format(double d,boolean comma) {
NumberFormat nf = NumberFormat.getInstance();
// 是否以逗号隔开, 默认true以逗号隔开,如[123,456,789.128]
nf.setGroupingUsed(comma);
// 结果未做任何处理
return nf.format(d);
}
/**
* 功能说明:数据格式话,返回字符串
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:36:29
* @param d float型数据
* @param comma
* @return
*/
public static String format(float d,boolean comma) {
NumberFormat nf = NumberFormat.getInstance();
// 是否以逗号隔开, 默认true以逗号隔开,如[123,456,789.128]
nf.setGroupingUsed(comma);
// 结果未做任何处理
return nf.format(d);
}
/**
* 功能说明:数字保留指定位数,返回字符串
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:37:37
* @param num double
* @param scale
* @return
*/
public static String format(double num,int scale) {
BigDecimal intput = new BigDecimal(Double.toString(num));
BigDecimal divisor = new BigDecimal(Integer.toString(1));
// 四舍五入,保留2位小数
return intput.divide(divisor,scale,BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 功能说明:数字保留指定位数,返回字符串
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:37:37
* @param num double
* @param scale
* @return
*/
public static String format(float num,int scale) {
BigDecimal intput = new BigDecimal(Double.toString(num));
BigDecimal divisor = new BigDecimal(Integer.toString(1));
// 四舍五入,保留2位小数
return intput.divide(divisor,scale,BigDecimal.ROUND_HALF_UP).toString();
}
/**
* 功能说明:判断是否为数字(正则)
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:38:31
* @param str
* @return
*/
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("-?[0-9]+.?[0-9]+");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() ){
return false;
}
return true;
}
/**
* * 两个Double数相加 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double add(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.add(b2).doubleValue());
}
/**
* * 两个Double数相减 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double sub(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.subtract(b2).doubleValue());
}
/**
* * 两个Double数相乘 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double mul(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.multiply(b2).doubleValue());
}
/**
* * 两个Double数相除 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double div(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
/**
* * 两个Double数相除,并保留scale位小数 *
*
* @param v1 *
* @param v2 *
* @param scale *
* @return Double
*/
public static Double div(Double v1, Double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());
}
/**
* 函数功能说明 TODO:求数组中最小值
* 作者:zhenglb
* 日期:2016-7-15 11:29:01 修改内容
*
* @Title: getArrMin
* @Description:
* @param array
* 数组
* @param @throws Exception 设定文件
* @return double 返回类型
* @throws
*/
public static Double getArrMin(Double[] array) {
Double min = array[0];
for (int i = 0; i < array.length; i++) {
if (min > array[i])
min = array[i];
}
return min;
}
/**
* 函数功能说明 TODO:求数组中最大值
* 作者:zhenglb
* 日期:2016-7-15 11:29:01 修改内容
*
* @Title: getArrMax
* @Description:
* @param array
* 数组
* @param @throws Exception 设定文件
* @return double 返回类型
* @throws
*/
public static Double getArrMax(Double[] array) {
Double max = array[0];
for (int i = 0; i < array.length; i++) {
if (max < array[i])
max = array[i];
}
return max;
}
/**
* 功能说明:数字格式化,默认保留5位
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:39:17
* @param d
* @return
*/
public static Double doubleFormat(Double d) {
BigDecimal b = new BigDecimal(d);
Double formatD = b.setScale(5, BigDecimal.ROUND_HALF_UP).doubleValue();
return formatD;
}
/**
* 功能说明:数字格式化,指定位数
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:39:38
* @param digits
* @param d
* @return
*/
public static Double doubleFormat(int digits,Double d) {
BigDecimal b = new BigDecimal(d);
Double formatD = b.setScale(digits, BigDecimal.ROUND_HALF_UP).doubleValue();
return formatD;
}
/**
* 功能说明:数字格式化,默认保留5位
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:39:17
* @param d
* @return
*/
public static Float format(Float f) {
BigDecimal b = new BigDecimal(f);
Float formatF = b.setScale(5, BigDecimal.ROUND_HALF_UP).floatValue();
return formatF;
}
/**
* 功能说明:数字格式化,指定位数
* 修改说明:
* @author zhenglb
* @date 2017-8-30 下午3:39:38
* @param digits
* @param d
* @return
*/
public static Float format(int digits,Float f) {
BigDecimal b = new BigDecimal(f);
Float formatF = b.setScale(digits, BigDecimal.ROUND_HALF_UP).floatValue();
return formatF;
}
}
最后
以上就是彩色小蘑菇为你收集整理的Java实现数学基本运算与小数格式化工具类-NumberUtil的全部内容,希望文章能够帮你解决Java实现数学基本运算与小数格式化工具类-NumberUtil所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复