BigDecimal 乘法问题

直接用我的代码和结果描述一下问题吧:

代码:

/** * Created by zhangx-ae on 2016/5/17. */
public class DemoTest {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(1000000);
        BigDecimal b = a.multiply(new BigDecimal(0.21));
        System.out.println(b);
    }
}

结果:

209999.9999999999922284388276239042170345783233642578125000000

我想要的结果是210000.00,应该如何处理结果呢?

实际上这是BigDecimal将double转化为Bigdecimal时出的问题,这是因为0.21不能够精确的表示double值,使用BigDecimal将double转化为精确值的时候所得的结果就会是0.2099999999999999922284388276239042170345783233642578125,所以相乘以后结果会是那个样子。

将String转为BigDecimal的时候,字符串是多少,结果就是多少,因此想要将double类型的数据转为BigDecimal的时候,这样做也许才是你想要的结果:

BigDecimal b = new BigDecimal(String.valueOf(0.21));

结果:

210000.00
    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/Excaliburace/article/details/51437406
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞