今天正忙的焦头烂额,领导突然问我为啥他写的代码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吧
閱讀更多 滿地姐呀 的文章