誰かが私がNumberFormatException.forInputString
これを得る理由を説明できますか:
string: "01000000000000000000000000000001"
Integer.parseInt(string, 10)
数値の正の int 表現が必要な場合、どうすれば修正できますか?
ありがとう
誰かが私がNumberFormatException.forInputString
これを得る理由を説明できますか:
string: "01000000000000000000000000000001"
Integer.parseInt(string, 10)
数値の正の int 表現が必要な場合、どうすれば修正できますか?
ありがとう
「0100000000000000000000000000001」は有効ではありませんint
。
int
最小値は -2,147,483,648、最大値は 2,147,483,647 (両端を含む) です。
それをBigIntegerに変換できます:
BigInteger myInt = new BigInteger(myString);
Integer.parseInt
数値を に解析しますint
。これは 32 ビットの符号付き整数です。数1000000000000000000000000000001
が多すぎて に収まりませんint
。
に格納できる最大数int
は 2,147,483,647 (2 31 - 1) です。
この数は よりもはるかに大きいですInteger.MAX_VALUE
。
を超えそうInteger.MAX_VALUE
です。ドキュメントから:
int が持つことができる最大値 2 31 -1 を保持する定数。
これは2147483647です
BigIntegerは、任意の精度の整数、つまり実質的に無制限の整数を格納するため、ここで役立つ場合があります。
入力番号 (010000000000000000000000000001) は より大きく、Interger.MAX_VALUE
解析可能な文字列ではありません。
2147483647 より大きく -2147483648 より小さい値は有効な整数ではありません。
ドキュメントの詳細