如何获取一个大于最大整数值的整数值

7

我知道在Java中,int类型的值最大只能达到2,147,483,647。但是我希望能够使用更大的值。举个例子,我有一个公式:

double x = a/(b*c); 

所以分母(b*c)可以达到10^10甚至更高。但是每当我执行公式时,值总是限制在2,147,483,647以下。我知道这是因为x必须始终小于1.0。 附言:如果满足某些条件,变量“a”也可以达到10^10。 a、b、c都是整数。

你是使用int还是double?当你执行公式时,如果所有变量都是double类型,你不应该遇到这个限制。 - Patrick Sebastien
4个回答

6

既然您需要,这里是一个BigInteger示例:

BigInteger a = new BigInteger("yourNumberInStringFormA");
BigInteger b = new BigInteger("yourNumberInStringFormB");
BigInteger c = new BigInteger("yourNumberInStringFormC");

BigInteger x = a.divide(b.multiply(c));

其中"yourNumberInStringForm"是一个可选的负号和数字(无空格或逗号)。例如,BigInteger z = new BigIntger("-3463634"); 注意:BigInteger将为您实际返回一个long,如果您的数字在其范围内。 longsL结尾,如下所示:

long num = 372036854775807L;

long的最大长度为:9,223,372,036,854,775,807。如果你的数字小于这个值,使用long或者它的包装类Long会使你的生活变得轻松许多,而不是使用BigInteger。因为使用long,你不需要使用除法/乘法等方法。


哦,基本上,BigInteger的值也受到long范围的限制。因此,我最好使用long类型,因为我的值只能达到9 x 10^10。 - Nexus
1
不,我进行了编辑。当你的数字比long还小时,BigInteger会为你返回一个long。处理longBigInteger容易得多。考虑到你的数字小于最大的long,你应该优先使用long而不是BigInteger - Steve P.

4

最大的整数值是Java语言中的常量。如果您需要更大于int所提供的实际数字,请使用long。如果您需要比intlong提供的整数更大的整数,可以使用BigInteger

BigInteger a = new BigInteger("9");
BigInteger b = new BigInteger("3");
BigInteger c = a.add(b); // c.equals(new BigInteger("12"), a and b are unchanged

BigIntegerLongInteger一样是不可变的,但您不能使用常规的运算符符号。相反,请使用该类提供的方法

我还注意到您最终得到一个double。如果在您的公式中使用双精度浮点数是可以接受的,值得注意的是它们的最大值是:1.7976931348623157 E 308

了解更多关于Java语言常量的信息


我正在进行研究,发现有一种叫做 BigInteger 的类型。我该如何使用它? - Nexus

2

使用 long 类型,它仍然是一个整数类型,但其最大值比 int 更高。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接