本帖最后由 黑马刘涛 于 2012-7-16 13:17 编辑
不必惊讶,Java中浮点数(double、float)的计算就是是非精确计算。原因嘛,你知道数值在计算机中都是表示为二进制补码,一个小数在变为二进制时可能会损失精度,因此这些浮点数再进行运算时还会损失精度。如果需要精确计算,非要用String来够造BigDecimal不可!
- BigDecimal b1 = new BigDecimal(Double.toString(2.0));
- BigDecimal b2 = new BigDecimal(Double.toString(1.1));
- BigDecimal b=b1.substract(b2);
- System.out.println(b);
复制代码浮点数就是这么恶心
|