关于BigDecimal精度问题

最近研究了下BigDecimal精度问题,发现稍不注意,就会丢失精度,下面是简单示例:

		BigDecimal bigDecimal = new BigDecimal(12.432);
        System.out.println("new BigDecimal => " +bigDecimal);

        BigDecimal decimal1 = new BigDecimal("12.432");
        System.out.println("new String BigDecimal => " + decimal1);

        BigDecimal decimal = BigDecimal.valueOf(12.432);
        System.out.println("valueOf BigDecimal => " +decimal);

        double doubleValue = bigDecimal.doubleValue();
        System.out.println("doubleValue BigDecimal => " +doubleValue);

        String s = bigDecimal.toString();
        System.out.println("toString BigDecimal => " + s);

        int intValue = bigDecimal.intValue();
        System.out.println("intValue BigDecimal => " + intValue);

上面对应输出:

new BigDecimal => 12.4320000000000003836930773104541003704071044921875
new String BigDecimal => 12.432
valueOf BigDecimal => 12.432
doubleValue BigDecimal => 12.432
toString BigDecimal => 12.4320000000000003836930773104541003704071044921875
intValue BigDecimal => 12

总结:
1、从上面可以看出构造方法:new BigDecimal(String s)、BigDecimal.valueOf()、BigDecimal.doubleValue()没有丢失精度,推荐使用String类型构造方法。
2、涉及到金额相关最好使用BigDecimal来定义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值