欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

所有开发应该知道的二进制运算溢出问题--19.9

程序员文章站 2022-07-14 23:50:44
...

今天测试突然提了一个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();//应付金额(分)