Python: вывод числа с разбиением на триады

Необходимо вывести число с разделением на триады. Красивого решения я не нашел. Вот вариант, который выдается за лучшее решение:

a = 300_000_000
b = 27.6
c = a/b
print('{:,}'.format(c))

Результат вывода: 10,869,565.217391305

Вопрос. Можно ли сформатировать число так, чтобы триады были разделены разделителем и количество цифр после точки было наперед задано? Например, две:

                    10,869,565.21

Ответы (3 шт):

Автор решения: S. Nick

Как вариант

print(f'{c:,.2f}')
→ Ссылка
Автор решения: GreyKoshak
print(f'{c:,.2f}'.replace(',', ' '))
10 849 909.58

И, если надо пробелы, то можно так. Спасибо, вполне в стиле питона.

→ Ссылка
Автор решения: Aleksei Trankov

Существует управляющий форматом символ n, который выводит число в формате текущей локали. Это самый верный способ, так как все пользователи увидят с теми разделителями, которые приняты в их стране.

import locale
locale.setlocale(locale.LC_ALL, "ru_RU.UTF-8")

numint = 200_000_000

print(f'{numint:n}')

Вывод:

200 000 000

С float могут быть проблемы, так как для больших чисел выведется экспоненциальная форма. В этом случае можно использовать locale.format_string:

print(locale.format_string('%.2f', numint, grouping=True))

Вывод:

200 000 000,00

Если нужен какой-то определённый формат вывода, подберите нужную локаль и установите не locale.LC_ALL, а locale.LC_NUMERIC. Это не повлияет на обычный вывод чисел, будет работать только с функциями модуля locale.

В большинстве случаев это правильнее, чем использовать replace.

→ Ссылка