今天正忙的焦頭爛額,領導突然問我為啥他寫的代碼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吧
閱讀更多 滿地姐呀 的文章