package com.dtb.member.util;import java.math.BigDecimal;import java.math.RoundingMode;import java.text.DecimalFormat;/** * @Author:ChengJian * @Description: * @Date: Created in 下午4:48 2019/1/17 */public class NumberUtils { /** * * @Description:7*0.01*100/100 保留四位小数,截取4位 * @Date:2019/1/17 下午4:49 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double getDouble_toNum_no4no5(double number,int num){ // setScale(1)表示保留一位小数,默认用四舍五入方式 // setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 // num 代表保留几位小数 return new BigDecimal(number).setScale(num, BigDecimal.ROUND_DOWN).doubleValue(); } /** * * @Description:setScale(1,BigDecimal.ROUND_UP)进位处理,不管后为是1还是6,都进1 * @Date:2019/1/17 下午4:59 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double getDouble_toNum_isincr(double number,int num){ return new BigDecimal(number).setScale(num, BigDecimal.ROUND_UP).doubleValue(); } /** * * @Description:正常四舍五入 * @Date:2019/1/28 下午5:37 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double getDouble_toNum_is45(double number,int num){ return new BigDecimal(number).setScale(num, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * * @Description:获取两个整数的double值 isNpoint:保留很多小数点 * @Date:2019/1/24 上午9:54 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double getDouble_division_isNpoint(int num1,int num2){ double result = num1*0.01*100/num2; return result; } /** * * @Description:两外一种方法,和上面方式不同,截取两位小数 * @Date:2019/1/24 上午10:03 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double getDouble_to2_no4no5(double num){ DecimalFormat df = new DecimalFormat("#0.##"); df.setRoundingMode(RoundingMode.FLOOR); return Double.parseDouble(df.format(num)); } /** * * @Description://四舍五入转换成整数 * @Date:2019/1/24 上午10:18 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static int getInteger(double num){ DecimalFormat df2 = new DecimalFormat("######0"); return Integer.parseInt(df2.format(num)); } /** * * @Description:提供精确的加法运算 * @Date:2019/1/28 上午10:38 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double add_2_double(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * * @Description:提供精确的减法运算 * @Date:2019/1/28 上午10:39 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double substract_2_double(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * * @Description:提供精确的乘法运算 * @Date:2019/1/28 上午10:40 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double multiply(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * * @Description:提供(相对)精确的除法运算,当发生除不尽的情况时,精确到小数点以后10位,以后的数字四舍五入. * @Date:2019/1/28 上午10:40 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double divide(double v1, double v2) { return divide(v1, v2, 10); } /** * * @Description:提供(相对)精确的除法运算.当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入 * @Date:2019/1/28 上午10:41 * @Author:ChengJian * @UpdateRemark: * @Version:1.0 * */ public static double divide(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(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } public static void main(String[] args) { System.out.println(getDouble_toNum_is45(2.1323,0)); }}