如果你不严谨要求的话,浮点类型自身的运算可以满足一些基本的需要,
但对于财务问题恐怕就不行了。为什么呢?
比如说double 100 = 99.999999999998
那么在购买的时候,一个商品卖了100元,你支付完成后,发现只支付了99.9999999998,这样恐怕就会引起一系列判断紊乱了。
如果严格控制浮点类型的精度呢?
答案就是使用BigDecimal,如下使用:
new BigDecimal("0.05") .add(new BigDecimal("0.01")) = 0.06
这是加法,还要其他的运算,都是严格精度的。
但需要注意的一点是,BigDecimal的构造方法很多,在进行浮点构造时千万别使用BigDecimal(double),而是使用BigDecimal(String).BigDecimal(double)也是不准确的。
核心讲完了,还有个小问题,在下一章: