Преобразование String в double на Java — Double.parseDouble и valueOf

Если число пришло строкой и в нём есть дробная часть, превратить его в double можно тремя способами.

Пример 1: строка в double через parseDouble()

Метод Double.parseDouble() разбирает строку и возвращает значение типа double.

class Main {
  public static void main(String[] args) {

    // create string variables
    String str1 = "23";
    String str2 = "456.6";

    // convert string to double
    // using parseDouble()
    double num1 = Double.parseDouble(str1);
    double num2 = Double.parseDouble(str2);

    // print double values
    System.out.println(num1);    // 23.0
    System.out.println(num2);    // 456.6
  }
}

Вывод:

23.0
456.6

Метод parseDouble() работает и с целыми, и с дробными числами в строке.

Предупреждение

Строка должна содержать только число. Если внутри будут буквы, метод выбросит NumberFormatException:

class Main {
  public static void main(String[] args) {

    // create a string variable
    String str1 = "Programiz";

    // convert string to double
    // using parseDouble()
    double num1 = Double.parseDouble(str1);

    // print double values
    System.out.println(num1);    // throws NumberFormatException
  }
}

Пример 2: строка в double через valueOf()

Метод Double.valueOf() возвращает объект класса Double, который автоматически разворачивается в примитив.

class Main {
  public static void main(String[] args) {

    // create string variables
    String str1 = "6143";
    String str2 = "21312";

    // convert String to double
    // using valueOf()
    double num1 = Double.valueOf(str1);
    double num2 = Double.valueOf(str2);

    // print double values
    System.out.println(num1);    // 6143.0
    System.out.println(num2);    // 21312.0
  }
}

Вывод:

6143.0
21312.0

Метод valueOf() возвращает объект Double, но Java сама разворачивает его в примитив double.

Пример 3: строка с запятой в double

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

class Main {
  public static void main(String[] args) {

    // create string variables
    String str = "614,33";

    // replace the , with .
    str = str.replace(",", ".");

    // convert String to double
    // using valueOf()
    double value = Double.parseDouble(str);

    // print double value
    System.out.println(value);    // 614.33
  }
}

Вывод:

614.33

Метод replace(",", ".") заменяет в строке все запятые на точки. После этого parseDouble() нормально разбирает строку.