我知道在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都是整数。
我知道在Java中,int类型的值最大只能达到2,147,483,647。但是我希望能够使用更大的值。举个例子,我有一个公式:
double x = a/(b*c);
既然您需要,这里是一个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
,如果您的数字在其范围内。 longs
以L
结尾,如下所示:
long num = 372036854775807L;
long
的最大长度为:9,223,372,036,854,775,807。如果你的数字小于这个值,使用long
或者它的包装类Long
会使你的生活变得轻松许多,而不是使用BigInteger
。因为使用long
,你不需要使用除法/乘法等方法。
long
还小时,BigInteger
会为你返回一个long
。处理long
比BigInteger
容易得多。考虑到你的数字小于最大的long
,你应该优先使用long
而不是BigInteger
。 - Steve P.最大的整数值是Java语言中的常量。如果您需要更大于int
所提供的实际数字,请使用long。如果您需要比int
和long
提供的整数更大的整数,可以使用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
BigInteger
与Long
和Integer
一样是不可变的,但您不能使用常规的运算符符号。相反,请使用该类提供的方法。
我还注意到您最终得到一个double
。如果在您的公式中使用双精度浮点数是可以接受的,值得注意的是它们的最大值是:1.7976931348623157 E 308
使用 long 类型,它仍然是一个整数类型,但其最大值比 int 更高。
试一下这个
double x = a / ((double) b * c);