Преобразование 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() нормально разбирает строку.