7.5.2 BigDecimal类
BigDecimal表示任意精度的浮点数,提供算术、舍入、比较和格式转换等操作。BigDecimal的四则运算等方法与BigInteger类似,这里不一一介绍这些方法,详细信息请参考Java API文档。
由于精度问题,浮点数在计算机中的存储并不是精确的。如果需要进行不产生舍入误差的精确数字计算,需要使用 BigDecimal 类。浮点数直接比较有时可能会出错,应避免对浮点数进行比较,要对浮点数进行比较也可以使用BigDecimal类。本节重点介绍使用BigDecimal类解决对浮点数运算和比较的精度问题。
浮点数四则运算和比较精度问题举例:
(https://www.daowen.com)
从代码和运行结果可以看出,浮点数在运算过程中精度出现了问题,导致本应相等的结果不相等,可以使用BigDecimal解决,示例代码如下:


可见,进行浮点数运算,尤其是商业运算,要使用BigDecimal,避免出现错误。