[英]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.