Double类型的值进行简单运算,结果出现很多位小数(BigDecimal的使用)

110 阅读1分钟

1.问题描述

当我们需要使用Double类型的值与Integer类型的值相乘时,得出的结果往往会有很多位的小数出现。

2.原因

 二进制不能准确的表示十进制的浮点数. 由十进制转换二进制的方法可以知道: 如果最后一位不是0或5,长度是无限的.

3.解决方案

使用 BigDecimal 进行运算

4.代码举例

BigDecimal bigDecimalPrice = new BigDecimal(""+getBook().getPrice());//把Double数值转换成字符串作为参数
BigDecimal bigDecimalBuyCount = new BigDecimal(""+buyCount);//同上
BigDecimal bigDecimalXJ = bigDecimalPrice.multiply(bigDecimalBuyCount);//BigDecimal的乘法运算
xj = bigDecimalXJ.doubleValue() ;
return xj;