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

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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值