BigInteger是Java提供的一个类,用于表示任意大小的整数。这个类位于 java.math包中,并且提供了用于算术运算、逻辑运算、位运算、比较和转换等的一系列方法。由于基本数据类型(如 int、long)在Java中有大小限制,所以 BigInteger 类对于需要处理非常大整数的情况非常有用。
以下是 BigInteger类的一些基本用法和特性:
1. 创建 BigInteger对象
通过字符串创建:可以使用一个字符串来表示一个大整数,并将其传递给 BigInteger 的构造函数。
BigInteger bigInt =newBigInteger("12345678901234567890");
通过其他数值类型创建:虽然不推荐(因为可能超出范围),但也可以从 long 或其他 BigInteger 对象创建。
BigIntegerbigIntFromLong = BigInteger.valueOf(1234567890123456789L);
2. 算术运算
add(BigInteger val): 加法
subtract(BigInteger val): 减法
multiply(BigInteger val): 乘法
divide(BigInteger val): 除法(返回商)
remainder(BigInteger val): 取余(返回余数)
pow(int exponent): 幂运算
negate(): 取反(返回相反数)
3. 比较运算
compareTo(BigInteger val): 比较两个 BigInteger 对象的大小。如果相等,返回0;如果当前对象小于参数,返回负数;如果当前对象大于参数,返回正数。
4. 位运算
and(BigInteger val): 按位与
or(BigInteger val): 按位或
xor(BigInteger val): 按位异或
not(): 按位非(注意,这是对整个 BigInteger 的每一位进行取反,结果可能非常大)
5. 转换
toString(): 转换为字符串
toByteArray(): 转换为字节数组(以大端字节序表示)
intValue(),longValue(),floatValue(),doubleValue():转换为基本数据类型(注意,如果 BigInteger 的值太大,可能会丢失精度或导致溢出)
6. 其他常用方法
isProbablePrime(int certainty): 判断一个数是否可能是质数(基于概率的算法)
abs(): 返回绝对值
max(BigInteger val): 返回两个 BigInteger 对象中的最大值
min(BigInteger val): 返回两个 BigInteger 对象中的最小值
modPow(BigInteger exponent, BigInteger m): 幂模运算((this^exponent) mod m)
7. 示例
import java.math.BigInteger;publicclassBigIntegerExample{publicstaticvoidmain(String[] args){BigInteger a =newBigInteger("12345678901234567890");BigInteger b =newBigInteger("98765432109876543210");BigInteger sum = a.add(b);System.out.println("Sum: "+ sum);BigInteger diff = a.subtract(b);System.out.println("Difference: "+ diff);BigInteger product = a.multiply(b);System.out.println("Product: "+ product);// ... 其他操作}}8. 注意事项
(1).尽量避免使用 BigDecimal 的 double 构造函数,因为它可能会产生不精确的结果。
(2).在进行除法运算时,一定要指定舍入模式和保留的小数位数,否则可能会抛出 ArithmeticException(如除以零或无法精确表示结果)。
(3).在进行货币计算时,建议使用 BigDecimal 的最小非零标度(通常是 2,即精确到分)进行计算,并在最后进行四舍五入和格式化输出。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/3208.html