2016-05-06 2 views
0

Я пытаюсь получить двойное значение с номера Филиппин. "2,3456".java.text.ParseException: Unparseable number: "2,3456" (при смещении 5)

Вот как я пытаюсь это сделать.

try { 
    return NumberFormat.getInstance(new Locale("en","PH")).parse("2,3456").doubleValue(); 
} catch (ParseException e) { 
    e.printStackTrace(); 

} 

Я получаю исключение для не поддается синтаксическому анализу Филиппины, но если я использую тот же код для Индонезии с Индонезией локали с String «2.3456» он работает нормально.

В чем проблема с местностью в Филиппинах?

+0

ли Филиппины использовать "" в качестве десятичного разделителя? Если нет, используйте «.». вместо. – Tom

+0

@Tom «,» - это тысяча сеперов. Я просто пытаюсь разобрать строку, которую я получаю – Beginner

+1

Кажется, что все нормально: http://ideone.com/okLW5W – assylias

ответ

0

Филлипин использует точку в качестве десятичного разделителя и запятую как разделитель тысяч. Но 2,3456 действителен в соответствии с языковой версией Phillipines, так как синтаксический анализатор пропущен относительно позиций разделителя тысяч.

Смотрите также https://en.wikipedia.org/wiki/Decimal_mark

+0

Это не совсем правильно, потому что '' 2,3456 "' можно правильно разобрать ('" 2,3,4,56 "' также). Синтаксический анализатор не настолько строг относительно положения разделителя тысяч, поскольку это не имеет значения. Он не изменит итоговое число. – Tom

+0

, даже если запятая находится в другом месте, она также должна работать нормально – Beginner

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