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

时间:2013-07-02 03:30:01

标签: java memory int

我知道在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都是整数。

4 个答案:

答案 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实际上会为您返回longlongsL结尾,如:

long num = 372036854775807L;

long的最大长度为:9,223,372,036,854,775,807。如果你的数字会低于这个数字,它会让你的生活变得更容易longLong,它的包装,超过BigInteger。由于使用long,您不必使用分割/乘法等方法

答案 1 :(得分:4)

max int值是一个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一样是不可变的,但您不能使用通常的运算符符号。而是使用班级的methods provided

我也注意到你最终得到double。如果可以在整个公式中使用双打,那么值得注意的是它们的最大值是:1.7976931348623157 E 308

Read more about java language constants

答案 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。