java.math.BigDecimal

本文介绍BigDecimal在高精度计算场景的应用,对比Double类型的局限性,并通过示例演示加、减、乘、除等基本运算,以及如何处理精度问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BigDecimal应用场景

Double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理,这时候使用Double经常会出现丢失精度,但业务对精度要求又比较严格,使用java.math.BigDecimal类进行精确计算:

BigDecimal使用:

  1. 构造方法推荐使用:
BigDecimal nums = new BigDecimal("66.66666");
  1. 常用的几种计算:
@Test
    public void testBigDecimal01(){
        BigDecimal result = null;
        BigDecimal num = new BigDecimal("66.66666");
        BigDecimal num2 = new BigDecimal("88.88888");
        //加
        result = num.add(num2);
        System.out.println(result.toString());
        //减
        result = num2.subtract(num);
        System.out.println(result.toString());
        //乘
        result = num.multiply(num2);
        System.out.println(result.toString());
        //除,保留两位小数,四舍五入
        (如果不指定精度出现除不尽的情况时会抛异常)。
        result = num2.divide(num , 2 , RoundingMode.HALF_UP);
        System.out.println(result.toString());
        //小数点左移动
        result = num.movePointLeft(2);
        System.out.println(result.toString());
        //小数点右移动
        result = num.movePointRight(2);
        System.out.println(result.toString());
        //判断是否相等:
        BigDecimal num3 = new BigDecimal("66.6666600");
        //会根据精度判断:1.31.30判断是不相等的
        System.out.println(num.equals(num3));
        //仅仅是数值上的判断:1.31.30是相等的。返回值:0-相等 -1-不相等
        System.out.println(num.compareTo(num3));

    }

总结:这个类用起来是真的舒服。
注意:有些框架并不支持该类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值