double型数据加减乘除工具类
public class DoubleUtil { /** * 很小的数值 用于double和0比较 存在尾差问题 ***/ private static final Double minVal = 0.00001; /** * 两个Double数相加 * * @param v1 * @param v2 * @return */ public static Double add(Double v1, Double v2) { BigDecimal b1 = new BigDecimal(v1.toString()); BigDecimal b2 = new BigDecimal(v2.toString()); return b1.add(b2).doubleValue(); } /** * 两个Double数相减 * * @param v1 * @param v2 * @return */ public static Double sub(Double v1, Double v2) { BigDecimal b1 = new BigDecimal(v1.toString()); BigDecimal b2 = new BigDecimal(v2.toString()); return b1.subtract(b2).doubleValue(); } /** * 两个Double数相乘 * * @param v1 * @param v2 * @return */ public static Double mul(Double v1, Double v2) { BigDecimal b1 = new BigDecimal(v1.toString()); BigDecimal b2 = new BigDecimal(v2.toString()); return b1.multiply(b2).doubleValue(); } /** * 两个Double数相乘,scale 小数位, 默认四舍五入的方式取整 * * @param v1 * @param v2 * @return */ public static Double mul(Double v1, Double v2, int scale) { if (v2 == 0) { return 0d; } BigDecimal b1 = new BigDecimal(v1.toString()); BigDecimal b2 = new BigDecimal(v2.toString()); return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 两个Double数相乘, scale 小数位 * * @param v1 * @param v2 * @return */ public static Double mul(Double v1, Double v2, int scale, int roundingMode) { if (v2 == 0) { return 0d; } BigDecimal b1 = new BigDecimal(v1.toString()); BigDecimal b2 = new BigDecimal(v2.toString()); return b1.multiply(b2).setScale(scale, roundingMode).doubleValue(); } /** * 两个Double数相除,并保留scale位小数,默认四舍五入的方式 * * @param v1 除数 * @param v2 被除数 * @param scale * @return */ public static Double div(Double v1, Double v2, int scale) { if (v2 == 0 || Math.abs(v2) < minVal) { return 0.0d; } return div(v1, v2, scale, BigDecimal.ROUND_HALF_UP); } /** * 两个Double数相除,保留scale位小数,并且指定取舍类型 * * @param v1 除数 * @param v2 被除数 * @param scale * @param roundingMode BigDecimal.ROUND_HALF_UP, * BigDecimal.ROUND_UP,BigDecimal.ROUND_DOWN... * @return */ public static Double div(Double v1, Double v2, int scale, int roundingMode) { if (scale < 0) { throw new IllegalArgumentException("The scale must be a positive integer or zero"); } if (v2 == 0 || Math.abs(v2) < minVal) { return 0.0d; } BigDecimal b1 = new BigDecimal(v1.toString()); BigDecimal b2 = new BigDecimal(v2.toString()); return b1.divide(b2, scale, roundingMode).doubleValue(); } }
人这辈子没法做太多事情,所以每做一件事都要做到精彩绝伦。
因为,这就是我的宿命。人生苦短,你明白吗?
所以这是我为人生做出的选择