Очень часто бывает следующая задача: конвертировать строку в числовой тип. В Java это можно сделать разными способами. Главное – учитывать максимальную размерность данных и точность (для дробных чисел).
Преобразование строки в целое число
Для конвертации строк в целые числа есть методы Integer.parseInt и Long.parseLong для конвертации в типы int и long, соответственно.
Простой способ получить int из строки:
int a1 = Integer.parseInt("123"); System.out.println(a1);
Примечание: метод Integer.parseInt корректно преобразует числа, входящие в диапазон типа int (-2147483648..2147483647). Если число выходит за эти границы или содержит недопустимые символы, будет выброшено исключение NumberFormatException:
int a2 = Integer.parseInt("3000000000"); // NumberFormatException int a3 = Integer.parseInt("123abc"); // NumberFormatException
Если вам нужны числа большей размерности, чем int, воспользуйтесь методом Long.parseLong:
long b1 = Long.parseLong("3000000000"); System.out.println(b1);
Например, можно использовать такой утилитарный метод, который при невозможности корректно распарсить строку вернёт ноль:
public static long stringToLong(String s) { try { return Long.parseLong(s); } catch (NumberFormatException e) { return 0; } }
Преобразование строки в дробное число
Для преобразования строк в дробные числа можно воспольоваться методами Float.parseFloat и Double.parseDouble, которые производят числа типов float и double, соответственно:
float f1 = Float.parseFloat("123.45"); System.out.println(f1); double d1 = Double.parseDouble("123.45"); System.out.println(d1);
Стоит заметить, что лучше пользоваться double вместо float из-за повышенной точности double.
Преобразование больших чисел
Если вам не хватает размерности для хранения чисел типах long и double, вы можете использовать BigInteger и BigDecimal:
System.out.println(new BigInteger("9223372036854775807000")); System.out.println(new BigDecimal("9.223372036854776777E21"));
Здесь не получится воспользоваться преобразованием в int из-за выхода за размеры int; получится преобразовать в double, но с потерей точности.
Заключение
В данной статье мы описали стандартные методы преобразования строки в число. При выборе метода нужно учитывать размерность типов, к которому приводится число.