Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

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

Короткий ответ

Флаг , в шаблоне String.format() добавляет разделители групп разрядов:

void main() {
    IO.println(String.format(Locale.US, "%,d", 1234567));
    IO.println(String.format(Locale.US, "%,.2f", 9876543.219));
}

Результат:

1,234,567
9,876,543.22

По правилам страны

Разные страны разделяют разряды по-разному. NumberFormat знает эти правила:

void main() {
    long population = 83_200_000;
 
    IO.println(NumberFormat.getInstance(Locale.US).format(population));
    IO.println(NumberFormat.getInstance(Locale.GERMANY).format(population));
    IO.println(NumberFormat.getInstance(Locale.of("ru")).format(population));
}

Результат:

83,200,000
83.200.000
83 200 000

В русском формате разряды разделяет неразрывный пробел.

Свой шаблон

DecimalFormat задаёт формат шаблоном: # — цифра, если она есть, 0 — цифра всегда:

void main() {
    var format = new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.US));
 
    IO.println(format.format(1234.5));
    IO.println(format.format(0.5));
}

Результат:

1,234.50
0.50

Сокращённая запись

NumberFormat.getCompactNumberInstance() превращает большие числа в короткую запись вроде «2K» и «2M». По умолчанию значение округляется до целого:

void main() {
    var format = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
 
    IO.println(format.format(1_500));
    IO.println(format.format(2_300_000));
}

Результат:

2K
2M

Частая ошибка

Разбирать отформатированную строку обратно через parseInt(). Разделители мешают:

void main() {
    IO.println(Integer.parseInt("1,234"));
}

Результат:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1,234"

Используйте NumberFormat.getInstance(Locale.US).parse("1,234") или уберите разделители заранее.

Функции из этого ответа

  • String.format() — Собирает строку по шаблону с подстановками вроде %s и %d.
  • NumberFormat — Форматирует числа, деньги и проценты по правилам выбранной страны.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.