import java.math.BigDecimal; /** * 精確的double加減乘除運算 * @author cyf * */ public class DoubleUtil { /** * 提供精確的加法運算。 * * @param v1 * 被加數 * @param v2 * 加數 * @return 兩個參數的和 */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供精確的減法運算。 * * @param v1 * 被減數 * @param v2 * 減數 * @return 兩個參數的差 */ public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * 相除 */ /** * * 兩個Double數相除 * * * @param v1 * * @param v2 * * @return Double */ public static int div(double v1, double v2) { BigDecimal b1 = new BigDecimal(v1+""); BigDecimal b2 = new BigDecimal(v2+""); return (int)b1.divide(b2, 1, BigDecimal.ROUND_HALF_UP) .doubleValue(); } /** * 提供精確的乘法運算。 * @param v1 被乘數 * @param v2 乘數 * @return 兩個參數的積 */ public static double mul(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } }
備忘 有問題請大神指證