Как правильно отформатировать значение 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.