繁体   English   中英

如何以INT_MAX模数得到结果?

[英]How can I get the result modulo INT_MAX?

如果我尝试应用: Integer.valueOf(String.valueOf(Integer.MAX_VALUE) + "9");
我得到一个NumberFormatException

但我需要从String表示中获取余数模数为Integer.MAX_VALUE

我怎样才能做到这一点?

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

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

以下将允许您使用非常大的数字进行模数:

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

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

您可以将代码编写为:

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

试试这个

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

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

你也可以这样试试:

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

使用

BigDecimal bd = new BigDecimal(str);

尝试以下代码

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM