BigDecimal 类

BigDecimal 类是 Java 中用来进行高精度定点数算术运算的主要类,它位于 java.math 包中。这个类设计用于需要精确小数点运算的场景,比如财务计算,以避免浮点数运算中的舍入误差

  1. 构造方法:

    • BigDecimal(String val):使用字符串表示的数值创建一个 BigDecimal 实例,这是推荐的构造方法,因为它可以精确地表示其值。
    • BigDecimal(double val):虽然存在这个构造方法,但不建议使用,因为它可能会引入舍入误差。
  2. 基本算术运算:

    • add(BigDecimal augend):加法。
    • subtract(BigDecimal subtrahend):减法。
    • multiply(BigDecimal multiplicand):乘法。
    • divide(BigDecimal divisor, int scale, RoundingMode roundingMode):除法,其中 scale 指定结果的小数位数,roundingMode 指定舍入模式。
  3. 比较和测试方法:

    • compareTo(BigDecimal val):比较两个 BigDecimal 的大小,返回值说明了调用对象与参数的相对大小(正数、零、负数分别代表大于、等于、小于)。
    • equals(Object x) 和 hashCode():用于比较 BigDecimal 对象是否相等以及在集合中使用。
  4. 舍入和精度处理:

    • setScale(int newScale, RoundingMode roundingMode):设置 BigDecimal 的小数位数并按指定的舍入模式进行四舍五入。
    • round(RoundingMode roundingMode):按照指定的舍入规则对 BigDecimal 进行舍入。
  5. 其他常用方法:

    • abs():返回该 BigDecimal 值的绝对值。
    • negate():返回该 BigDecimal 值的相反数。
    • pow(int n):返回 this 值的 n 次幂。
    • stripTrailingZeros():去掉尾部多余的零。
    • toPlainString():转换为字符串,不使用科学计数法表示。
  6. 静态方法:

    • BigDecimal.ZEROBigDecimal.ONEBigDecimal.TEN 等:提供了常量实例,方便使用。
    • valueOf(long val) 或 valueOf(double val):静态工厂方法,推荐使用于 long 或 double 转换为 BigDecimal,比直接使用构造函数更优。

  // 创建两个BigDecimal对象,建议使用字符串构造,以避免直接使用double可能导致的精度问题
        BigDecimal number1 = new BigDecimal("234.567");
        BigDecimal number2 = new BigDecimal("123.456");

        // 进行加法运算
        BigDecimal sum = number1.add(number2);

        // 打印结果
        System.out.println("和为: " + sum);

        // 如果需要设定精度和舍入模式进行运算,可以这样做:
        MathContext mc = new MathContext(4, RoundingMode.HALF_UP); // 保留4位小数,四舍五入
        BigDecimal roundedSum = number1.add(number2, mc);
        System.out.println("设定精度和舍入模式进行运算结果: " + roundedSum);
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值