Java精确计算工具类,以后会逐步扩增。
package com.JohanChan.utils; import java.math.BigDecimal; public class CalculateUtils { /** * 加法 * * @param var1 * @param var2 * @return */ public static double add(double var1, double var2) { BigDecimal b1 = new BigDecimal(Double.toString(var1)); BigDecimal b2 = new BigDecimal(Double.toString(var2)); return b1.add(b2).doubleValue(); } /** * 减法 * * @param var1 * @param var2 * @return */ public static double sub(double var1, double var2) { BigDecimal b1 = new BigDecimal(Double.toString(var1)); BigDecimal b2 = new BigDecimal(Double.toString(var2)); return b1.subtract(b2).doubleValue(); } /** * 乘法 * * @param var1 * @param var2 * @return */ public static double mul(double var1, double var2) { BigDecimal b1 = new BigDecimal(Double.toString(var1)); BigDecimal b2 = new BigDecimal(Double.toString(var2)); return b1.multiply(b2).doubleValue(); } /** * 除法 * * @param v1 被除数 * @param v2 除数 * @param scale 精度,到小数点后几位 * @return */ public static double div(double v1, double v2, int scale) { if (scale < 0) { throw new IllegalArgumentException("精确度不能小于0"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 四舍五入 * @param v * @param scale 精确位数 * @return */ public static double round(double v, int scale) { if (scale < 0) { throw new IllegalArgumentException("精确度不能小于0"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } }