我知道在Java中int可以获得2,147,483,647的值。但我想要更多的价值。我有一个公式例如:
double x = a/(b*c);
因此分母(b * c)可以达到10 ^ 10甚至更高。但每当我执行公式时,该值始终限制为2,147,483,647。我知道因为x必须始终小于1.0。 P / S:如果满足某些条件,即使变量“a”也可以达到10 ^ 10。 a,b,c都是整数。
答案 0 :(得分:5)
既然你要求它,这是一个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
,您不必使用分割/乘法等方法
答案 1 :(得分:4)
max int值是一个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
一样是不可变的,但您不能使用通常的运算符符号。而是使用班级的methods provided。
我也注意到你最终得到double
。如果可以在整个公式中使用双打,那么值得注意的是它们的最大值是:1.7976931348623157 E 308
答案 2 :(得分:2)
使用长类型,仍然是整数类型,但其最大值高于 int
答案 3 :(得分:0)
试试这个
double x = a / ((double) b * c);
a和c将被java自动转换为double。请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.2 如果任一操作数的类型为double,则另一个操作数转换为double。