BigDecimal学习总结

  

 通过构造方法String不会产生精度问题

 BigDecimal bigDecimal = new BigDecimal("0.74101");
 System.out.println("bigDecimal:"+bigDecimal);


 bigDecimal:0.74101

  通过构造方法Double会产生无线循环小数

        Double doubleValue = new Double(0.74101);
        BigDecimal bigDecimal = new BigDecimal(doubleValue);
        System.out.println("bigDecimal:"+bigDecimal);

        bigDecimal:0.7410099999999999464961319972644560039043426513671875

 通过构造方法int不会产生精度问题

  BigDecimal bigDecimal = new BigDecimal(2);
  System.out.println("bigDecimal:"+bigDecimal);

 通过构造方法long不会产生精度问题 

        Long longNum = new Long(1111111111111111111L);
        BigDecimal bigDecimal = new BigDecimal(longNum);
        System.out.println("bigDecimal:"+bigDecimal);

 使用int或者long底层不会产生精度

  计算金额或者百分比等问题 

        BigDecimal bigDecimal1 = new BigDecimal("0.1");
        BigDecimal amount = new BigDecimal("100.05");
        BigDecimal bigDecimal = bigDecimal1.multiply(new BigDecimal("100"))
                .divide(amount,2,BigDecimal.ROUND_HALF_UP);
        System.out.println("bigDecimal:" +bigDecimal);

 如果不设置保留几位小数,则默认以最长小数为最终依据:

        BigDecimal percentNum = new BigDecimal("0.1");
        BigDecimal amount = new BigDecimal("100.001");
        BigDecimal resultValue = amount.subtract(percentNum);

        System.out.println("percentNum:"+percentNum);
        System.out.println("amount:"+amount);
        System.out.println("resultValue:"+resultValue);

        percentNum:0.1
        amount:100.001
        resultValue:99.901

        Double doubleValue = new Double(0.74101);
        String doubleString = doubleValue.toString();
        BigDecimal bigDecimalValue = BigDecimal.valueOf(doubleValue);
        System.out.println("bigDecimalValue:"+bigDecimalValue);
        System.out.println("doubleString:"+doubleString);

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值