简介
在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。
如果要存储比 Integer 更大的数字,Integer 数据类型就无能为力了。因此,Java 中提供 BigInteger 类来处理更大的数字。BigInteger 类型的数字范围较 Integer 类型要大得多。BigInteger 支持任意精度的整数,在运算中 BigInteger 类型可以准确地表示任何大小的整数值。
除了基本的加、减、乘、除操作之外,BigInteger 类还封装了很多操作,像求绝对值、相反数、最大公约数以及判断是否为质数等。
静态字段
1 | static BigInteger ONE BigInteger 的常量 1。 |
构造方法
要使用 BigInteger 类,首先要创建一个 BigInteger 对象。BigInteger 类提供了很多种构造方法,其中最直接的一种是参数以字符串形式代表要处理的数字。这个方法语法格式如下:
1 | BigInteger(String val) |
这里的 val 是数字十进制的字符串。例如,要将数字 5 转换为 BigInteger 对象,语句如下:
1 | BigInteger bi = new BigInteger("5") |
其余构造方法如下:
1 | BigInteger(byte[] val) |
方法
常用方法名称以及说明:
方法名称 | 说明 |
---|---|
add(BigInteger val) | 做加法运算,返回其值为 (this + val) 的 BigInteger。 |
subtract(BigInteger val) | 做减法运算,返回其值为 (this - val) 的 BigInteger。 |
multiply(BigInteger val) | 做乘法运算,返回其值为 (this * val) 的 BigInteger。 |
divide(BigInteger val) | 做除法运算, 返回其值为 (this / val) 的 BigInteger。 |
remainder(BigInteger val) | 做取余数运算, 返回其值为 (this % val) 的 BigInteger。 |
divideAndRemainder(BigInteger val) | 做除法运算,返回包含 (this / val) 和 (this % val) 的两个 BigInteger 的数组。数组的第一个值为商,第二个值为余数。 |
pow(int exponent) | 做参数的 exponent 次方运算,返回其值为 (this exponent) 的 BigInteger。 |
negate() | 取相反数,返回其值是 (-this) 的 BigInteger。 |
shiftLeft(int n) | 将数字左移 n 位,返回其值为 (this << n) 的 BigInteger。如果 n 为负数,则做右移操作。 |
shiftRight(int n) | 将数字右移 n 位, 返回其值为 (this >> n) 的 BigInteger。如果 n 为负数,则做左移操作。 |
and(BigInteger val) | 做与运算,返回其值为 (this & val) 的 BigInteger。 |
or(BigInteger val) | 做或运算,返回其值为 (this | val) 的 BigInteger。 |
compareTo(BigInteger val) | 做数字的比较运算,将此 BigInteger 与指定的 BigInteger 进行比较。 |
equals(Object obj) | 当参数 obj 是 Biglnteger 类型的数字并且数值相等时返回 true, 其他返回 false。 |
min(BigInteger val) | 返回此 BigInteger 和 val 的最小值。 |
max(BigInteger val) | 返回此 BigInteger 和 val 的最大值。 |
其它方法:
1 | BigInteger abs() |
实例
1 | import java.math.BigInteger; |
上述代码将用户输入的整型数字保存到 num 变量中,由于 BigInteger 类的构造方法只接收字符串类型的参数,所以使用“new BigInteger(num+””)” 代码来创建 BigInteger 对象。接下来的代码演示了如何调用 BigInteger 类提供的运算方法,运行效果下所示。
1 | 请输入一个整型数字: |
参考资料:
java入门教程 java BigInteger类和BigDecimal类
OpenFire_ 高精度操作数值 BigDecimal类和BinInteger类