Вывод чисел с форматированием в 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 - два знака после запятой.