如何将字符串转换为 BigInteger?

2022-08-31 11:00:39

我试图从标准输入中读取一些非常大的数字,并将它们加在一起。

但是,要添加到BigInteger,我需要使用:BigInteger.valueOf(long);

private BigInteger sum = BigInteger.valueOf(0);

private void sum(String newNumber) {
    // BigInteger is immutable, reassign the variable:
    sum = sum.add(BigInteger.valueOf(Long.parseLong(newNumber)));
}

这工作正常,但是由于唯一采用 a ,我不能将大于 的最大值(9223372036854775807)的数字相加。BigInteger.valueOf()longlong

每当我尝试添加9223372036854775808或更多时,我都会得到一个NumberFormatException(这是完全可以预期的)。

有没有类似的东西?BigInteger.parseBigInteger(String)


答案 1

使用构造函数

BigInteger(String val)

将 BigInteger 的十进制字符串表示形式转换为 BigInteger。

Javadoc


答案 2

根据文档

BigInteger(String val)

将 BigInteger 的十进制字符串表示形式转换为 BigInteger。

这意味着您可以使用 来初始化对象,如以下代码段所示:StringBigInteger

sum = sum.add(new BigInteger(newNumber));