如何创建一个非常大的BigInteger

时间:2014-12-22 16:12:43

标签: java biginteger

我需要添加两个非常大的整数

  46376937677490009712648124896970078050417018260538
+ 37107287533902102798797998220837590246510135740250;

这有什么问题?

BigInteger f = 37107287533902102798797998220837590246510135740250;

如何使用BigInteger在Java中解决此问题?

5 个答案:

答案 0 :(得分:13)

此处的问题是3710...将被解释为int,因此它将超出范围。基本上你要做的是创建一个int,然后将其转换为BigInteger,并且第一步将失败,因为int无法存储数字那么大。

您需要使用带有String

的构造函数
BigInteger f = new BigInteger("37107287533902102798797998220837590246510135740250");

,同样适合您的其他BigInteger

答案 1 :(得分:3)

Java没有对BigInteger文字的内置支持 - 你不能这样写:

BigInteger f = 37107287533902102798797998220837590246510135740250;

使用BigInteger的构造函数代替String

BigInteger f = new BigInteger("37107287533902102798797998220837590246510135740250");

添加两个BigInteger个对象:

BigInteger f = new BigInteger("37107287533902102798797998220837590246510135740250");
BigInteger g = new BigInteger("46376937677490009712648124896970078050417018260538");

BigInteger sum = f.add(g);

答案 2 :(得分:1)

你需要从String而不是数字文字构造你的BigInteger,因为它不能正常工作,因为它首先被转换为int。

答案 3 :(得分:1)

尝试使用add method

BigInteger number1 = new BigInteger("46376937677490009712648124896970078050417018260538");
BigInteger number2 = new BigInteger("37107287533902102798797998220837590246510135740250");
BigInteger sum = number1.add(number2);

需要使用new运算符创建BigInteger的对象,并且您尝试直接将数字指定为bigInteger,这不是有效语句。您可以将该数字作为字符串传递给BigInteger的构造函数,如上所述。

答案 4 :(得分:1)

您应该将声明写为

BigInteger f = new BigInteger("37107287533902102798797998220837590246510135740250");

BigInteger g = new BigInteger("46376937677490009712648124896970078050417018260538");

现在,添加

BigInteger sum = f.add(g);

用于乘法

BigInteger product = f.multiply(g);

等等。

对于BigIntegers,您不能使用+-*/运算符,而不像其他变量类型。您需要为每个操作使用方法。