Очень часто бывает следующая задача: конвертировать строку в числовой тип. В 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, но с потерей точности.

Заключение

В данной статье мы описали стандартные методы преобразования строки в число. При выборе метода нужно учитывать размерность типов, к которому приводится число.

Как преобразовать строку в число