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;