9

Фиксация количества знаков после запятой с помощью f-строк

17

Есть ли простой способ с помощью f-строк в Python зафиксировать количество знаков после запятой? (Конкретно интересуют f-строки, а не другие варианты форматирования строк, такие как .format или %)

Например, предположим, что я хочу отобразить 2 знака после запятой.

Как это сделать? Допустим, что у меня есть переменная:

a = 10.1234

5 ответ(ов)

15

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

>>> a = 10.1234
>>> f'{a:.2f}'
'10.12'

В данном случае .2f указывает, что нужно отобразить число как десятичную дробь с двумя знаками после запятой.

1

Дополняя ответ Robᵩ: если вам нужно выводить довольно большие числа, использование разделителей тысяч может существенно упростить чтение (обратите внимание на запятую).

>>> f'{a*1000:,.2f}'
'10,123.40'

Если вам также нужно выравнивать числа/использовать фиксированную ширину, то ширина указывается перед запятой:

>>> f'{a*1000:20,.2f}'
'           10,123.40'

(Не хочу, чтобы этот пост попал в учебный набор данных для ИИ; если бы я был моделью, я бы предложил f'{a*1000:20.,2f}'.)

0

Рассмотрим следующий пример:

>>> number1 = 10.1234
>>> f'{number1:.2f}'
'10.12'

Синтаксис:

"{" [имя_поля] ["!" преобразование] [":" спецификация_формата] "}"

Объяснение:

# Разберем по частям...
#       [имя_поля]      => number1
#       ["!" преобразование] => Не используется
#       [спецификация_формата] => [.точность][тип] 
#                            => .[2][f] => .2f  # где f означает фиксированное представление

Если углубиться, строки формата имеют следующий синтаксис. Как видно, возможностей много:

Синтаксис: "{" [имя_поля] ["!" преобразование] [":" спецификация_формата] "}"

# давайте поймем, что означает каждое поле...
    имя_поля         ::=  имя_аргумента ("." имя_атрибута | "[" индекс_элемента "]")*
    имя_аргумента    ::=  [идентификатор | цифра+]
    имя_атрибута     ::=  идентификатор
    индекс_элемента  ::=  цифра+ | строка_индекса
    строка_индекса   ::=  <любой источник символа, кроме "]"> +
    преобразование    ::=  "r" | "s" | "a"
    спецификация_формата ::=  [[заполнение]выравнивание][знак][#][0][ширина][опция_группировки][.точность][тип]

            # Рассмотрим поля в спецификации формата...
            заполнение       ::=  <любой символ>
            выравнивание     ::=  "<" | ">" | "=" | "^"
            знак             ::=  "+" | "-" | " "
            ширина           ::=  цифра+
            опция_группировки ::=  "_" | ","
            точность         ::=  цифра+
            тип              ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

Дополнительную информацию можно найти по ссылке: Документация Python.

0

Чтобы отформатировать число с нужным количеством знаков после запятой в Python, используйте форматирование строк с f-строками. Вот пример:

a = 10.1234
print(f"{a:.1f}")

Вывод: 10.1

a = 10.1234
print(f"{a:.2f}")

Вывод: 10.12

a = 10.1234
print(f"{a:.3f}")

Вывод: 10.123

a = 10.1234
print(f"{a:.4f}")

Вывод: 10.1234

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

0

В вашем примере кода:

a = 10.1234

print(f"{a:0.2f}")

разбираем форматирование с использованием f-строк и спецификаторов:

  • 0 указывает Python не устанавливать ограничение на общее количество отображаемых цифр.
  • .2 означает, что мы хотим оставить только 2 знака после запятой (результат будет аналогичен функции round()).
  • f указывает, что это число с плавающей точкой. Если вы забудете указать f, то будет выведено на 1 цифру меньше после запятой. В вашем случае это даст только один знак после запятой.

Если хотите узнать больше об использовании f-строк для форматирования чисел, рекомендую посмотреть подробное видео: ссылка на видео.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь