@student_1

Как спарсить строку в double?

Есть строка: String str = " 80.00 ";
Я хочу его спарсить в double, но компилятор мне выдает exception.
Вопрос: В чем может быть проблема?
код:
String str = " 80.00 ";
double sum = Double.parse(str.trim());

Результат:
java.lang.NumberFormatException: For input string: " 80.00 "
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:543)
  • Вопрос задан
  • 331 просмотр
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Ваша виртуальная машина используют ту локаль, в которой дробная часть отделяется запятой вместо точки.
Ответ написан
@rPman
потому что тут используются настройки системной локали (в разных странах используется разные разделители . или ,)

Выбирай страну с твоим форматом или проси пользователей вводить числа в формате, принятом в своей стране (указанной в системной локали ОС)
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); // Locale.US если надо точку, осторожно запятая с ним игнорируется как разделитель тысяч
Number number = format.parse("1,234");
double d = number.doubleValue();


p.s. каких только глюков я с этой точкой не вижу
программисты в россии привыкли к точке, а в стандарте ожидается запятая.
например приложение сбер на экране рисует запятую, но вводить для копеек надо точку (запятая выдаст ошибку)

но самое паршивое, когда народ лезет в настройки локали windows и меняет запятую на точку и получает еще больше глюков с тем же ms office
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы