Как правильно отформатировать значение Double с десятичным разделителем?

У меня есть приложение, которое использует разделитель тысяч (,) и десятичный разделитель (.), Я использовал это приложение на 2 планшетах с одинаковыми языками (Español) в их конфигурации, и когда я выполняю какой-то процесс с номерами, такими как 15 000,00 на первом ответ был правильным, но во второй табличке число меняется на 15,00. Я изменил язык второго на английский, и он работает, но как я могу установить этот числовой формат в коде?

Извините за ошибки, это не мой родной язык.

Спасибо за помощь

3 ответа

Решение

Вы можете отформатировать используя

NumberFormat nf = NumberFormat.getInstance(new Locale("es", "MX")); //for example

Но будьте осторожны, потому что, в зависимости от локали, даже если один и тот же язык, но другая страна, десятичные символы и символы группирования меняются, например

NumberFormat nf = NumberFormat.getInstance(new Locale("es", "CO")); //displays 15.000,00

Вы можете отформатировать двойное значение в коде так:

/**
 * format a number properly
 * @param number
 * @return
 */
public String formatDecimal(double number) {

    DecimalFormat nf = new DecimalFormat("###.###.###.##0,00");
    // or this way: nf = new DecimalFormat("###,###,###,##0.00");

    String formatted = nf.format(number);

    return formatted;
}

А затем установите его в TextView:

mytextview.setText("MyDouble: " + formatDecimal(somedouble));

Вы можете получить экземпляр для конкретной локали, как указано в документации Android:

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);

Тем не менее, вы не должны изменять языковой стандарт при отображении материала пользователю imho.

Другие вопросы по тегам