公司一个项目,在进行对账的时候,突然提示我,金额不符;
原金额为1659960分,而我上传的为1659959分 ,查看数据库发现数据库是16599.60元,所以判断是我在上传的时候,处理数据的时候,导致精度丢失;
下面是我原代码,其中yamount 是double类型数据【】
int b = IntegerUtils.toInteger(yamount*100);
为了保持精度,我使用了BigDecimal
public static double multiply(double num1, double num2)
{
BigDecimal big1 = new BigDecimal(Double.toString(num1));
BigDecimal big2 = new BigDecimal(Double.toString(num2));
return big1.multiply(big2).doubleValue();
}
这样计算出来的结果就保持了原有的精度;