Java String.format два десятичных знака с точками в качестве тысячи разделителей и запятой в качестве десятичного разделителя - PullRequest
0 голосов
/ 26 мая 2019

Мне нужно отформатировать число с точностью до десятичного знака, "." в качестве разделителя тысяч и "," в качестве десятичного разделителя, например: "1.234,56"

Я пробовал String.format("%,f", myFloat), но у меня слишком много знаков после запятой, например: "1.150,000000". Кроме того, String.format("%,2f", myFloat) тоже не сработало.

1 Ответ

1 голос
/ 26 мая 2019

Вы можете попробовать использовать DecimalFormat класс для форматирования ваших чисел по вашему желанию:

float number = 12344.12f;

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(','); // to be sure it is ','

DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setDecimalFormatSymbols(symbols);
decimalFormat.setMaximumFractionDigits(2);

String format = decimalFormat.format(number);

System.out.println(format);

Вывод:

12.344,12

EDIT

Для фиксированных десятичных знаков попробуйте это:

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(','); // to be sure it is ','

DecimalFormat decimalFormat = new DecimalFormat("#.###.00");
decimalFormat.setDecimalFormatSymbols(symbols);

String format = decimalFormat.format(number);
...