Разделитель десятичного формата

У меня возникла проблема с форматированием десятичных значений для локализации на испанский (и другие европейские языки), когда десятичный разделитель для Испании отображается как запятая ,.
Как я могу получить десятичный разделитель как точку .?

Вот код, который я использовал для форматирования десятичного числа

    DecimalFormat twoDecimalForm = null;
     twoDecimalForm = new DecimalFormat("#.##");
     DecimalFormatSymbols.getInstance().setDecimalSeparator('.');
    String valueInDecimal = twoDecimalForm.format(0.005 * progressValue);
//Exception here 
 Log.d(TAG,"valueInDecimal" + Double.valueOf(valueInDecimal));

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

Но есть ли другое решение?


person Madhukar Hebbar    schedule 02.11.2015    source источник
comment
Во многих странах в качестве десятичного разделителя используется запятая, поэтому было бы лучше просто разрешить это: docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html   -  person Ken Wolf    schedule 02.11.2015
comment
@KenWolf Я выполняю некоторые математические операции над приведенными выше значениями во многих местах, которые возвращают java.lang.NumberFormatException: Invalid double:   -  person Madhukar Hebbar    schedule 02.11.2015
comment
Просто не конвертируйте в число: Log.d(TAG,"valueInDecimal = " + valueInDecimal.replace(",", ".");   -  person Phantômaxx    schedule 02.11.2015
comment
@FrankN.Stein Каждое место, где я выполняю математическую операцию, мне нужно добавить код замены; что не хорошо?!   -  person Madhukar Hebbar    schedule 02.11.2015
comment
Делайте все математические операции, какие хотите. Затем просто перед отображением числа в текстовом представлении или журнале преобразуйте его в строку и замените запятую точкой. ЛЕГКИЙ.   -  person Phantômaxx    schedule 02.11.2015
comment
Спасибо @FrankN.Stein. Но невозможно выполнить математическую операцию с таким числом, как 8,97 (8,97). :)   -  person Madhukar Hebbar    schedule 02.11.2015
comment
Вы шутите... вы выполняете математические операции типа Double c = Double a (= 8,97) * Double b (= 1,5). результат: c = 13,455, а ЗАТЕМ преобразуйте c в строку и покажите, заменив запятую точкой. Что так сложно понять?   -  person Phantômaxx    schedule 02.11.2015
comment
@FrankN.Stein Круто :).Спасибо. Делаем то же самое прямо сейчас.   -  person Madhukar Hebbar    schedule 02.11.2015


Ответы (1)


Если вы получаете данные из Интернета, попросите своего веб-разработчика передать данные в соответствии с вашими требованиями, тогда ваша проблема будет решена или вы можете выбрать вариант замены.

person chetan mekha    schedule 02.11.2015
comment
Это андроид проект. Если в качестве локали выбрана Испания/Европа, значение будет указано через запятую. - person Madhukar Hebbar; 02.11.2015
comment
Как вы получаете данные внутри приложения? Он уже хранится в приложении или получен со стороны сервера? - person chetan mekha; 02.11.2015
comment
Данные, которые я анализирую в десятичном формате, дают десятичный разделитель в виде запятой, что приводит к неправильной математической операции. - person Madhukar Hebbar; 02.11.2015
comment
прежде чем приступить к математической операции, вы можете заменить , на . Я спрашиваю, откуда вы берете данные? - person chetan mekha; 02.11.2015