今天正忙的焦头烂额,领导突然问我为啥他写的代码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吧