Skip to content

BigInteger 和 BigDecimal 类


常用方法

注意点:传参类型必须是 BigInteger 或者 BigDecimal 类对象

方法功能
add
subtract
multiply
divide

BigInteger

基本介绍

作用:适合保存比较大的整型数

构建方法

调用构造器,传入内容是数字的字符串,创建 BigInteger 对象

代码示例

java
import java.math.BigInteger;

public class main {
    public static void main(String[] args) {
        BigInteger bigInteger = new BigInteger("999999999999999999999999");
        System.out.println(bigInteger);

        BigInteger bigInteger1= new BigInteger("9");

        // 加法
        System.out.println("add:" + bigInteger.add(bigInteger1));

        // 减法
        System.out.println("subtract:" + bigInteger.subtract(bigInteger1));

        // 乘法
        System.out.println("multiply:" + bigInteger.multiply(bigInteger1));

        // 除法
        System.out.println("divide:" + bigInteger.divide(bigInteger1));
    }
}

// 输出结果
999999999999999999999999
add:1000000000000000000000008
subtract:999999999999999999999990
multiply:8999999999999999999999991
divide:111111111111111111111111

BigDecimal

基本介绍

作用:适合保存高精度浮点数(小数)

构建方法

调用构造器,传入内容是小数的字符串,创建 BigDecimal 对象

⚠️ 注意点

在 BigDecimal 使用除法的时候,会出现除不尽(无限循环小数)的情况,这个时候会抛出 ArithmeticException异常

解决方法

传参时候传入BigDecimal.ROUND_CEILING 参数,这个时候结果的精度就会和分子保持一致

代码示例

java
import java.math.BigDecimal;

public class main {
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal("99.8888888888889999999");
        System.out.println(bigDecimal);

        BigDecimal bigDecimal1= new BigDecimal("7");

        // 加法
        System.out.println("add:" + bigDecimal.add(bigDecimal1));

        // 减法
        System.out.println("subtract:" + bigDecimal.subtract(bigDecimal1));

        // 乘法
        System.out.println("multiply:" + bigDecimal.multiply(bigDecimal1));

        // 除法
        System.out.println("divide:" + bigDecimal.divide(bigDecimal1,BigDecimal.ROUND_CEILING));
    }
}

// 输出结果
99.8888888888889999999
add:106.8888888888889999999
subtract:92.8888888888889999999
multiply:699.2222222222229999993
divide:14.2698412698412857143