在java方法里面写的计算公式,比如a * b + c / d 得到的结果很有可能和计算器得打的不一样
public float xx(){
return BigDecimalUtils . round( a * b + c / d , 2)
}
想到得到的结果保留两位小数
得到的结果很有可能与理想得到的结果相差0.01分
原因:数值相乘得到的结果会丢失精度 ,两个double的值直接用运算符 【+ - * /】都会丢失精度
解决方法 :
BigDecimal a_1 = new BigDecimal(Double.toString(a));
a_1.multiply(b_1).add(c_1.divide (d_1))
divide 除法
multiply乘法
add加法
注意:除法容易发生错误
除法特殊用法:
a_1.divide(new BigDecimal(6),10,BigDecimal.ROUND_HALF_EVEN)
xx.divide(a_1,保留几位小数,四舍五入)