MathUtil.java 2.0 KB
package com.framework.util;


import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 * 数字计算帮助类
 * @author 61004
 *
 */
public class MathUtil {
	
	public static boolean isNumber(String str) {  
	        Pattern pattern = Pattern.compile("^[0-9]+(\\.[0-9]*)?$");
	        Matcher match=pattern.matcher(str);  
	        return match.matches();  
	 }  
	
	/**
	 * 
	 * @param num1 分子
	 * @param num2 分母
	 * @return
	 */
	public static String percentage(float num1,float num2) {
        // 创建一个数值格式化对象  
        NumberFormat numberFormat = NumberFormat.getInstance();  
        // 设置精确到小数点后2位  
        numberFormat.setMaximumFractionDigits(2);  
        String result = numberFormat.format(num1 / num2 * 100);  
        return result + "%";
	}
	
	/**
	 * 判断两个数字相差是否超过10%
	 * @param n1
	 * @param n2
	 * @return
	 */
	public static boolean isHign10Per(double n1,double n2) {
		if(n1 ==0 || n2==0) {
			return true;
		}
		return Math.abs(n1-n2)/n1 >= 0.1;
	}
	
	/**
	 * 获取两个数字相差百分比
	 * @param n1
	 * @param n2
	 * @return
	 */
	public static String getHighPer(double n1,double n2) {
		String result = "%";
		NumberFormat numberFormat = NumberFormat.getInstance(); 
		numberFormat.setMaximumFractionDigits(2);
		if(n1 ==0 || n2 ==0) {
			// 设置精确到小数点后2位  
	        result = numberFormat.format(Math.abs(n1-n2)*100) +"%";  
		}else{
			result = numberFormat.format((Math.abs(n1-n2)/n1)*100) +"%";
		}
		return result;
	}

    //保留两位小数
    public static Double keepTwoDecimalPlaces(Double num) {
        if(null==num || 0==num){
            return null;
        }
        BigDecimal bg = new BigDecimal(num);
        return bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
	
	public static void main(String[] args) {
		System.out.println(MathUtil.keepTwoDecimalPlaces(0.781));
	}

}