如何以INT_MAX模数得到结果?

时间:2015-03-05 09:08:05

标签: java string

如果我尝试申请:Integer.valueOf(String.valueOf(Integer.MAX_VALUE) + "9");
我得到NumberFormatException

但是我需要从Integer.MAX_VALUE表示中得到余数模String

我怎样才能做到这一点?

UPD:Integer.valueOf(String.valueOf(Integer.MAX_VALUE) + "9");只是一个例子。该字符串的值可能超过Long的最大值。

5 个答案:

答案 0 :(得分:2)

您正在寻找BigInteger。这允许使用非常大的数字进行数学运算。

以下内容允许您使用非常大的数字进行模数运算:

BigInteger number = new BigInteger(myValueAsString);
BigInteger intMax = BigInteger.valueOf(Integer.MAX_VALUE);
BigInteger remainder = number.remainder(intMax);

答案 1 :(得分:2)

要保存大量输入,您可以尝试BigInteger类。创建一个将保存String输入的对象,并使用第二个BigInteger类对象对其进行模数化,该对象将保存整数的MAX_VALUE。

您可以将代码编写为:

        BigInteger bigInteger = new BigInteger(str);
        bigInteger  = bigInteger.remainder(new BigInteger(String.valueOf(Integer.MAX_VALUE)));
        System.out.println(bigInteger);

答案 2 :(得分:1)

试试这个

int i = (int)Long.parseLong(String.valueOf(Integer.MAX_VALUE) + "9");

注意:我会使用(Integer.MAX_VALUE +“9”)

答案 3 :(得分:1)

你也可以这样试试:

    System.out.println(Long.valueOf(String.valueOf(Integer.MAX_VALUE + "9")) % 5);

答案 4 :(得分:1)

使用

BigDecimal bd = new BigDecimal(str);

尝试以下代码

int i = Integer.MAX_VALUE ;
System.out.println(i+1);