Я новичок в java. Пожалуйста, помогите мне,
int i = Integer.parseInt("9876543210123456");
System.out.println("Integer: " + i);
я получил ошибку ниже,
java.lang.NumberFormatException for input string : "9876543210123456"
Я новичок в java. Пожалуйста, помогите мне,
int i = Integer.parseInt("9876543210123456");
System.out.println("Integer: " + i);
я получил ошибку ниже,
java.lang.NumberFormatException for input string : "9876543210123456"
Он превышает целочисленный лимит. Вам нужно BigInteger
BigInteger b = new BigInteger("9876543210123456");
Вы не можете преобразовать приведенное выше значение в int
, так как оно превышает максимальное значение Integer: 2 147 483 647.
Вместо этого попробуйте:
Long.parseLong("9876543210123456");
Лонг имеет максимальное значение 9 223 372 036 854 775 807.
Чтобы проверить максимальные значения этих и других примитивных типов данных, попробуйте:
Integer.MAX_VALUE;
Long.MAX_VALUE;
// etc for Float, Double...
// Also try MIN_VALUE
В Java примитивный тип данных int представляет собой 32-разрядное целое число в дополнении до двух со знаком http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Вы можете использовать Длинный:
long i = Long.parseLong("9876543210123456");
System.out.println("Long: " + i);
См. API здесь — http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html
Или вы также можете использовать BigInteger:
BigInteger i = new BigInteger("9876543210123456");
System.out.println("BigInteger: " + i);
См. API здесь — http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
BigInteger аналогичен примитивным целочисленным типам, за исключением того, что он обеспечивает произвольную точность, поэтому операции над BigInteger не переполняются и не теряют точность. В дополнение к стандартным арифметическим операциям BigInteger обеспечивает модульную арифметику, вычисление НОД, проверку простоты, генерацию простых чисел, манипулирование битами и несколько других различных операций.
Если вы не уверены, следует ли использовать примитив или ссылку на объект, вот хорошее обсуждение
Когда использовать примитивные и ссылочные типы в Java а>
В java диапазон int составляет от -2 147 483 648 до 2 147 483 647. Так что попробуйте long вместо int.
NumberFormat nf = NumberFormat.getInstance();
Вы также можете использовать NumberFormat для анализа чисел:
myNumber = nf.parse("9876543210123456");
увидеть ниже
http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html
Хотя BigInteger может работать, но лучший способ — оставить его только String
и отобразить как String
. Это идеальный способ работы с длинными цифрами, и вы не столкнетесь с какими-либо исключениями.
MAX_INT
, почему бы не сохранить его только в строке и отобразить (на консоли, веб-странице или любом другом).
- person roger_that; 02.12.2013
long x = Long.parseLong("9876543210123456");
System.out.println("Integer: " + x);
или, пожалуйста, используйте следующую строку
BigInteger bint = new BigInteger("9999999999999999", 16);
Пожалуйста, попробуйте это .. Не удается преобразовать строку из более чем 13 цифр в int .. поэтому вам следует преобразовать в длинную
BigInteger
- person Jeroen Vannevel   schedule 02.12.2013int
. - person Andrew Thompson   schedule 02.12.2013numberformatexception
? Не то чтобы кто-то на самом деле следует этому. - person Chris Hayes   schedule 02.12.2013