纳尼!50减去0等于0???敲黑板划重点了


纳尼!50减去0等于0???敲黑板划重点了

今天正忙的焦头烂额,领导突然问我为啥他写的代码50 减去0等于 0?

头上冒出三条黑线,作为领导你还真是啥奇葩问题都能遇到

小女不才,给出以下方法

BigDecimal b1 = BigDecimal.valueOf(500);

BigDecimal b2 = BigDecimal.valueOf(0);

int count = b1.subtract(b2).intValue();


结合上次遇到的问题,以后代码中的加减乘除还是都使用BigDecimal吧,总结方法如下


public static double add(double v1, double v2) {


BigDecimal b1 = BigDecimal.valueOf(v1);

BigDecimal b2 = BigDecimal.valueOf(v2);

return b1.add(b2).doubleValue();

}


//精确的减法运算

public static double sub(double v1, double v2) {


BigDecimal b1 = BigDecimal.valueOf(v1);

BigDecimal b2 = BigDecimal.valueOf(v2);

return b1.subtract(b2).doubleValue();

}


//精确的乘法运算

public static double mul(double v1, double v2) {


BigDecimal b1 = BigDecimal.valueOf(v1);

BigDecimal b2 = BigDecimal.valueOf(v2);

return b1.multiply(b2).doubleValue();

}


//提供(相对)精确的除法运算,当发生除不尽的情况时,精确到小数点后10位的数字四舍五入

public static double div(double v1, double v2) {


BigDecimal b1 = BigDecimal.valueOf(v1);

BigDecimal b2 = BigDecimal.valueOf(v2);

return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue();

}

分享完毕!!!以后关于计算还是都转型成BigDecimal吧


分享到:


相關文章: