納尼!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吧


分享到:


相關文章: