java BigInteger转long
时间: 2024-09-09 22:10:15 浏览: 51
在Java中,`BigInteger` 类是一个不可变的任意精度的整数。由于 `long` 类型是有固定位数限制的(64位),当 `BigInteger` 的数值超出了 `long` 的表示范围时,直接转换会引发异常。要将 `BigInteger` 转换为 `long` 类型,可以使用 `longValueExact()` 方法,该方法在数值超出 `long` 的表示范围时会抛出 `ArithmeticException` 异常。如果只需要将 `BigInteger` 转换为 `long` 类型而不关心范围问题,则可以直接调用 `longValue()` 方法,如果数值超出范围,则会截断高位数值。
以下是如何进行转换的代码示例:
```java
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("12345678901234567890"); // 一个超过long范围的BigInteger实例
try {
long longValueExact = bigInteger.longValueExact(); // 这将抛出ArithmeticException
System.out.println(longValueExact);
} catch (ArithmeticException e) {
System.out.println("数值超出了long的范围,无法转换");
}
long longValue = bigInteger.longValue(); // 截断超出范围的部分
System.out.println(longValue);
}
}
```
阅读全文