2015-11-17 2 views
0

Я не могу понять этоjava.lang.NumberFormatException от разбора строки на двойной

double d = Double.valueOf(str); 
double d2 = Double.parseDouble(str); 

оба метода дают следующее исключение:

java.lang.NumberFormatException: Invalid дважды: " -73,04"

Однако следующее значение жёстко работает просто отлично:

double d = Double.valueOf("-73.04");

+0

Таким образом, проблема заключается в содержании строки. Символы точки и/или минуса могут быть не такими же, как в вашем жестком коде. – assylias

+0

Вы пытались обрезать строку, переданную обоим методам? Он может содержать дополнительные символы, такие как пробел или возврат строки, которые эти методы не понимают. – orion78fr

+0

Я заменил. & - с моим. trim также не помогает – itzhar

ответ

2

После копирования номера из названия этого вопроса и вставив в IntelliJ между двойными кавычками, стало ясно, что проблема:

double d = Double.parseDouble("\u200E-73.04"); 

Exception in thread "main" java.lang.NumberFormatException: For input string: "?-73.04" 

Копирование с жесткого кодировкой -73.04 не имеют такое поведение.

У вас есть "left-to-right mark" Unicode character в вашей строке. Вы должны удалить этот посторонний символ Юникода из своей строки перед его разбором.

+0

если у может показать «как-то», это будет хорошо – itzhar

Смежные вопросы