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

Раздел: Основы Python -> Форматирование вывода

Форматирование чисел при выводе

Основной способ - f-строки (f-strings), доступные с Python 3.6. Они обеспечивают наилучшую читаемость и производительность.

number = 123.456789
result = f"Число: {number:.2f}"
print(result)

ввод через пробел python (ввод и вывод чисел через пробел в python)

Число: 123.46

вывод через пробел python (вывод через пробел в python)

Спецификатор .2f означает два знака после запятой с округлением. Также можно использовать другие спецификаторы.

Как вывести число с фиксированным количеством знаков после запятой?

Через f-строку: f"{value:.3f}" - три знака.

value = 5.6789
print(f"Три знака: {value:.3f}")

Python print sep (параметр sep в print python)

Три знака: 5.679

Python форматирование чисел (форматирование чисел при выводе в python)

Ошибка: если число уже имеет большую точность, Python округляет по правилам банковского округления (round half to even). Для контроля используйте модуль decimal.

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

Используйте запятую (или подчеркивание) в спецификаторе: f"{value:,}".

big = 1234567
print(f"С запятыми: {big:,}")

формат вывода строки python (формат вывода строки в python)

С запятыми: 1,234,567

Python число вывести текстом (вывод числа прописью в python)

Для подчеркивания: f"{big:_}" - результат 1_234_567.

Как вывести число в научной нотации?

Спецификатор e или E: f"{value:.2e}".

num = 12345.67
print(f"Научная: {num:.2e}")

как выводить целые числа python (вывод целых чисел в python)

Научная: 1.23e+04

Как вывести процент?

Спецификатор % умножает значение на 100 и добавляет знак процента.

p = 0.25
print(f"Процент: {p:.1%}")
Процент: 25.0%

Как вывести число в шестнадцатеричной системе?

Спецификатор x (нижний регистр) или X (верхний).

n = 255
print(f"Шестнадцатеричное: {n:x}")
Шестнадцатеричное: ff

Как использовать метод format()?

Метод str.format() - более старый, но широко используемый.

value = 42.123
print("Значение: {:.2f}".format(value))
Значение: 42.12

Как использовать %-форматирование?

Стиль C-подобного форматирования устарел, но всё ещё встречается.

value = 7.5
print("Значение: %.2f" % value)
Значение: 7.50

Проблема: менее читаемо, поддерживает только кортеж или один аргумент. Ошибки при несовпадении типов.

Как вывести число со знаком или без него?

Спецификатор + показывает знак всегда, - только для отрицательных (по умолчанию).

pos = 42
neg = -42
print(f"{pos:+d}, {neg:+d}")
+42, -42

Как вывести число с выравниванием и заполнением?

Укажите общую ширину и символ заполнения. f"{value:>10}" - выравнивание вправо, < - влево, ^ - по центру.

val = 5.5
print(f"{val:>10.2f}")
print(f"{val:<10.2f}")
print(f"{val:^10.2f}")
      5.50
5.50      
  5.50   

Как вывести число с ведущими нулями?

Используйте спецификатор 0 перед шириной: f"{num:05d}".

n = 7
print(f"{n:05d}")
00007

Как вывести число в восьмеричной системе?

Спецификатор o.

n = 64
print(f"Восьмеричное: {n:o}")
Восьмеричное: 100

Расширенные примеры форматирования чисел

Комбинация выравнивания и точности

Пример
price = 1234.567
print(f"Цена: {price:>12.2f} руб.")
print(f"Цена: {price:<12.2f} руб.")
print(f"Цена: {price:^12.2f} руб.")
Цена:      1234.57 руб.
Цена: 1234.57      руб.
Цена:   1234.57   руб.

Параметр ширины (12) задаёт минимальную длину поля, а точность (.2f) - количество знаков после запятой.

Динамическая точность из переменной

Пример
value = 3.14159265
precision = 4
print(f"{value:.{precision}f}")
3.1416

Точность подставляется как вложенное выражение.

Форматирование с использованием модуля decimal

Для финансовых расчётов, где важна точность:

Пример
from decimal import Decimal, ROUND_HALF_UP
d = Decimal('123.456')
d = d.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
print(f"{d}")
123.46

Метод quantize с явным указанием округления.

Локализованные разделители тысяч через locale

Пример
import locale
locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')
num = 1234567.89
print(locale.format_string("%.2f", num, grouping=True))
1 234 567,89

В русской локали разделитель - пробел, десятичный разделитель - запятая.

Вывод чисел в разных системах счисления с префиксом

Пример
n = 255
print(f"Двоичное: {n:#b}")
print(f"Восьмеричное: {n:#o}")
print(f"Шестнадцатеричное: {n:#x}")
Двоичное: 0b11111111
Восьмеричное: 0o377
Шестнадцатеричное: 0xff

Символ # добавляет стандартный префикс (0b, 0o, 0x).

Форматирование с заполнителем и знаком

Пример
n = -42
print(f"{n:+=10d}")
       -42

Спецификатор += означает: всегда показывать знак (+ или -), выравнивание вправо, ширина 10.

Округление через round() и форматирование

Пример
value = 2.675
rounded = round(value, 2)
print(f"{rounded}")
2.67

Результат может удивить из-за двоичного представления: 2.675 на самом деле чуть меньше, поэтому округляется вниз.

Для строгого математического округления используйте Decimal.

Форматирование с символом валюты и разделителем

Пример
amount = 12345.6789
print(f"${amount:,.2f}")
$12,345.68

Запятая добавляет разделитель тысяч, .2f - два знака после запятой.

Форматирование чисел при выводе в Python - comments

En
Python форматирование чисел (python)