📅  最后修改于: 2023-12-03 14:50:04.628000             🧑  作者: Mango
在Java中,long
类型的取值范围是-2^63 ~ 2^63-1
。如果需要处理更大的数值,可以使用Java预先定义好的BigInteger
类。在本文中,我们将介绍如何使用BigInteger
类来处理大数值。
在Java程序中,我们可以通过import
语句引入java.math
包,然后就能使用其中的BigInteger
类了。
import java.math.BigInteger;
我们可以通过调用BigInteger
类的构造函数来创建一个BigInteger
对象,指定大数值的字符串表示方式:
BigInteger bigInt = new BigInteger("123456789012345678901234567890");
也可以直接将long
类型的变量转换为BigInteger
类型:
long num = 1234567890;
BigInteger bigInt = BigInteger.valueOf(num);
BigInteger
类支持多种运算操作,例如加法、减法、乘法和除法。这些操作返回的都是一个新的BigInteger
对象。
BigInteger a = new BigInteger("123456789");
BigInteger b = new BigInteger("987654321");
// 加法
BigInteger sum = a.add(b); // sum = a + b
// 减法
BigInteger diff = a.subtract(b); // diff = a - b
// 乘法
BigInteger product = a.multiply(b); // product = a * b
// 除法
BigInteger quotient = a.divide(b); // quotient = a / b
除了上述的运算操作,BigInteger
类还提供了一些方法,用于获取数值大小、比较大小、取模等等。
BigInteger a = new BigInteger("123456789");
BigInteger b = new BigInteger("987654321");
// 获取当前数值的正负性
int signum = a.signum(); // signum = 1,表示a为正数
// 比较两个数值的大小
int comp = a.compareTo(b); // comp < 0,表示a < b
// 取模操作
BigInteger[] result = a.divideAndRemainder(b); // result[0] = a / b, result[1] = a % b
下面是一个简单的示例程序,通过BigInteger
类计算了一个较大的数值的平方和:
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger sum = BigInteger.ZERO;
for (int i = 1; i <= 100000; i++) {
BigInteger num = BigInteger.valueOf(i);
sum = sum.add(num.pow(2));
}
System.out.println(sum);
}
}
在上述程序中,我们定义了一个sum
变量,用于存储100000个数值的平方和。在循环中,我们使用了valueOf()
方法将int
类型的变量转换为BigInteger
类型,并使用add()
方法进行加法运算,最后输出结果。
BigInteger
类在Java中是用于处理大数值的类,提供了多种运算操作和方法,方便开发者进行数值计算。在使用过程中,需要注意BigInteger
对象本身是不可变的,每次进行运算后都会返回一个新的BigInteger
对象。