今天测试突然提了一个bug给我,系统里面抵扣砖石不对,我是真的惊了,从服务器拿的数据时19.9元 然后我们本地计算,钻石比例是100,然后转换为砖石之后变成了 1989,当初还以为是算错了,后面上网一查,原来是double类型二进制运算溢出问题,不光是java ,.net也会有这样的问题,只有19.9会出问题,9.9和29.9不会;
处理方案
BigDecimal bignum1 = new BigDecimal(servicePrice);
BigDecimal bignum2 = new BigDecimal("100");
BigDecimal bignum3 = bignum1.multiply(bignum2); //乘法运算
allMoney = bignum3 .intValue();//应付金额(分)