我需要添加两个非常大的整数
46376937677490009712648124896970078050417018260538
+ 37107287533902102798797998220837590246510135740250;
这有什么问题?
BigInteger f = 37107287533902102798797998220837590246510135740250;
如何使用BigInteger
在Java中解决此问题?
答案 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,您不能使用+
,-
,*
,/
运算符,而不像其他变量类型。您需要为每个操作使用方法。