解決java中兩個double型別的值相加
阿新 • • 發佈:2019-01-25
每週六都急急忙忙趕過來加班,今天早上一同事問我兩個double型別相加會出現精度問題,找了很久沒找到原因,後來在網上一看需要額外處理一下,提供幾個通用的方法。
/** * 提供精確的加法運算 * @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(); } /** * 提供精確的乘法運算 * @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(); }