大数
224字小于1分钟
2025-09-23
当某个数值大到超出double和long的取值范围时
大数的作用就是用来存储这些特别大的数值的
整数
// 需导包 import java.math.BigInteger;
// 大数
BigInteger b1 = new BigInteger("111222221111111111111111111111111");
BigInteger b2 = new BigInteger("10");
// 大数不能使用普通的加减乘除(+ - * /)
// 加(add)
System.out.println(b1.add(b2));
// 减(subtract)
System.out.println(b1.subtract(b2));
// 乘(multiply)
System.out.println(b1.multiply(b2));
// 除(divide)
System.out.println(b1.divide(b2));
// 运行结果
111222221111111111111111111111121
111222221111111111111111111111101
1112222211111111111111111111111110
11122222111111111111111111111111
小数
// 需导包 import java.math.BigDecimal;
BigDecimal bd1 = new BigDecimal("99999999.999999999999999999999");
BigDecimal bd2 = new BigDecimal("9.9");
// 加
System.out.println(bd1.add(bd2));
// 减
System.out.println(bd1.subtract(bd2));
// 乘
System.out.println(bd1.multiply(bd2));
// 除
// 注意点:因为小数之间相除可能会有无限循环小数的情况(此时会报错 ArithmeticException)
// 需要给结果指定一个精度, BigDecimal.ROUND_CEILING 表示精度和分子(bd1)的一致
System.out.println(bd1.divide(bd2, BigDecimal.ROUND_CEILING));
// 运行结果
100000009.899999999999999999999
99999990.099999999999999999999
989999999.9999999999999999999901
10101010.101010101010101010101