我是靠谱客的博主 彩色小蘑菇,最近开发中收集的这篇文章主要介绍Java实现数学基本运算与小数格式化工具类-NumberUtil,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部