Java BigInteger和BigDecimal大数据类的用法(附带实例)
在 Java 程序中对货币等大值数据进行计算时,int、long、float 和 double 等基本数据类型在精度方面就不能满足需求了。为此,Java 提供了两个大数字类,分别是 java.math.BigInteger 和 java.math.BigDecimal,这两个类都继承自 java.lang.Number 抽象类,如下图所示。

图 1 大数字类图
BigInteger提供多种方法,下面列举几个常用的方法:
示例代码如下:
BigDecimal 提供多种方法,下表列举了几个常用的方法。
示例代码如下:

图 1 大数字类图
Java BigInteger类
java.math.BigInteger 是不可变的任意精度的大整数。其构造方法有很多,其中字符串参数的构造方法有两个:- BigInteger(String val):将十进制字符串 val 转换为 BigInteger 对象;
- BigInteger(String val, int radix):按照指定基数 radix 将字符串 val 转换为 BigInteger 对象。
BigInteger提供多种方法,下面列举几个常用的方法:
| 方法 | 功能 |
|---|---|
| BigInteger add(BigInteger val) | 加运算,当前对象数字加参数 val。 |
| BigInteger subtract(BigInteger val) | 减运算,当前对象数字减参数 val。 |
| BigInteger multiply(BigInteger val) | 乘运算,当前对象数字乘参数 val。 |
| BigInteger divide(BigInteger val) | 除运算,当前对象数字除以参数 val。 |
示例代码如下:
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
// 创建 BigInteger 对象
BigInteger num1 = new BigInteger("123456789012345678901234567890");
BigInteger num2 = new BigInteger("9876543210987654321098765432210");
// 执行基本的算术运算
BigInteger sum = num1.add(num2);
BigInteger difference = num1.subtract(num2);
BigInteger product = num1.multiply(num2);
BigInteger quotient = num1.divide(num2);
// 显示结果
System.out.println("数 1:" + num1);
System.out.println("数 2:" + num2);
System.out.println("和:" + sum);
System.out.println("差:" + difference);
System.out.println("积:" + product);
System.out.println("商:" + quotient);
}
}
程序运行结果如下:
数 1:123456789012345678901234567890
数 2:9876543210987654321098765432210
和:111111111101111111101111111111100
差:-864197532086419753208641975320
积:121932631137021795226185032733622923322237463801111263526900
商:0
Java BigDecimal类
java.math.BigDecimal 也是不可变的任意精度的有符号十进制数。其构造方法有很多,如下表所示。| 构造方法 | 功能 |
|---|---|
| BigDecimal(BigInteger val) | 将 BigInteger 对象 val 转换为 BigDecimal 对象。 |
| BigDecimal(double val) | 将 double 转换为 BigDecimal 对象,参数 val 是 double 类型的二进制浮点值准确的十进制表示形式。 |
| BigDecimal(int val) | 将 int 转换为 BigDecimal 对象。 |
| BigDecimal(long val) | 将 long 转换为 BigDecimal 对象。 |
| BigDecimal(String val) | 将字符串表示数字形式转换为 BigDecimal 对象。 |
BigDecimal 提供多种方法,下表列举了几个常用的方法。
| 方法 | 功能 |
|---|---|
| BigDecimal add(BigDecimal val) | 加运算,当前对象数值加参数 val。 |
| BigDecimal subtract(BigDecimal val) | 减运算,当前对象数值减参数 val。 |
| BigDecimal multiply(BigDecimal val) | 乘运算,当前对象数值乘参数 val。 |
| BigDecimal divide(BigDecimal val) | 除运算,当前对象数值除以参数 val。 |
| BigDecimal divide(BigDecimal val, int roundingMode) | 除运算,当前对象数值除以参数 val。roundingMode 为要应用的舍入模式。 |
示例代码如下:
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
// 创建 BigDecimal 对象
BigDecimal num1 = new BigDecimal("12345678901234567890123456789.123456789");
BigDecimal num2 = new BigDecimal("98765432109876543210987654321.987654321");
// 执行基本的算术运算
BigDecimal sum = num1.add(num2);
BigDecimal difference = num1.subtract(num2);
BigDecimal product = num1.multiply(num2);
BigDecimal quotient = num1.divide(num2, 10, BigDecimal.ROUND_HALF_UP); // ①
// 显示结果
System.out.println("数 1:" + num1);
System.out.println("数 2:" + num2);
System.out.println("和:" + sum);
System.out.println("差:" + difference);
System.out.println("积:" + product);
System.out.println("商:" + quotient);
}
}
运行结果如下:
数 1:12345678901234567890123456789.123456789
数 2:98765432109876543210987654321.987654321
和:111111111011111111101111111111.111111110
差:-86419753208641975320864197532.864197532
积:1219326311370217952261850327360615759547340344433609205911.347203169112635269
商:0.1249999989
ICP备案:
公安联网备案: