Форматирование двойного Android

Я хочу повернуть, например. 5999,635554 - 5 999,63. Я использовал метод DecimalFormat ниже:

public static String *****************(****** value){
 DecimalFormat df = new DecimalFormat("#,###,###.00");
 String formatted_value = df.format(value).replaceAll("\\.", ",");
 return formatted_value;
}

Однако, когда я использовал его, то есть Util.*****************(value); напр. -4000.4343 я получаю следующее -4,000,43.

мой желаемый результат должен быть -4000.4343 = > -4 000,43.

1 ответ

Если вы хотите -4,000.43 (строка из вызова format()) стать -4 000,43, вы можете сделать две замены.

Во-первых, заменить все символы , пробелами, а затем заменить все . символы на ,.

String formatted_value = df.format(value)
 .replaceAll("," , " ")
 .replaceAll("\\.", ",");

Это становится проблематичным, если вы хотите обменять , и . (a) но вы все равно можете это сделать, хотя и с помощью трехэтапного процесса:

comma => X
period => comma
X => period

(где X - любой символ, который в противном случае не отображается в строке, например, "X").

Однако может существовать строка формата, которую вы можете использовать для этого уже без необходимости замены строк. Из здесь, кажется, что специальные символы локализованы, поэтому должен быть способ создать DecimalFormat с определенным DecimalFormatSymbol на основе языковой стандарт.

По крайней мере, тот факт, что в самой Java. Может ли Java Android сделать то же самое, я не уверен. Известно, что они раньше придерживались другого подхода к интернационализации.

(a) Обманите этих европейцев и их смешные числовые форматы: -)

licensed under cc by-sa 3.0 with attribution.