Форматирование строк на самом деле является удивительно большой темой, и у Python есть собственный внутренний мини-язык для обработки множества доступных нам параметров форматирования. В этой статье мы разберем только форматирование чисел. Вы узнаете, как вывести число с нужным количеством знаков после запятой и с разбивкой по три цифры.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Форматирование чисел с округлением
Сначала давайте рассмотрим форматирование чисел с плавающей запятой до заданного уровня округления. Есть два способа сделать это: можно указать нужное количество значащих цифр в целом или количество значащих цифр после десятичной точки. Начнем с первого.
Чтобы указать уровень точности округления, нам нужно использовать двоеточие (:), за которым следует десятичная точка, а также некоторое целое число, представляющее степень точности (количество знаков после запятой). При использовании f-строки мы помещаем всё это после значения, которое хотим отформатировать (в фигурных скобках) . Вместо этого также можно использовать метод format.
x = 4863.4343091 # пример числа с плавающей запятой print(f"{x:.6}") # использование f-строки print("{:.6}".format(x)) # использование метода format
В обоих случаях мы получаем одинаковый результат: 4863.43.
Как видите, наше довольно длинное число сократилось до шести цифр. Также следует отметить, что данная операция форматирования может производить еще и округление. Если, например, первоначальное число будет иметь значение 4863.435, то выведем в консоль мы 4863.44. Здесь используется округление до ближайшего четного числа (в английском языке banker’s rounding — «округление банкира»).
Если мы укажем меньше цифр, чем у нас есть в целочисленной части нашего числа с плавающей запятой, то получим экспоненциальное представление:
x = 4863.4343091 print(f"{x:.3}") # 4.86e+03
4.86e+03 означает 4,86 x 10³, или 4,86 x 1000, что равно 4860. Глядя на этот результат, мы видим, что получили три значащих цифры, как и хотели.
Итак, а как нам указать три десятичных знака после запятой? Для этого нужно просто добавить f
.
x = 4863.4343091 print(f"{x:.3f}") # 4863.434
f
в данном случае указывает, что наше число типа float должно отображаться как «число с фиксированной точкой». То есть нам нужно определенное количество десятичных знаков. Мы также можем использовать f
без числа, что по умолчанию означает точность 6 цифр после точки:
x = 4863.4343091 print(f"{x:f}") # 4863.434309
Вывод числа с разбивкой на разряды
Большие числа зачастую удобно писать с использованием символов-разделителей (обычно это запятые, пробелы или точки). Это улучшает их восприятие при чтении. В Python мы можем указать, каким символом разбить цифры числа на классы, указав нужный символ после двоеточия:
x = 1000000 print(f"{x:,}") # 1,000,000 print(f"{x:_}") # 1_000_000
При форматировании чисел с плавающей запятой и форматировании с округлением это тоже работает:
x = 4863.4343091 print(f"{x:,.3f}") # 4,863.434 print(f"{x:_.3f}") # 4_863.434
Вывод числа в процентах
Мы можем вывести число в качестве процентного значения, просто добавив символ %
в конце параметров форматирования вместо f
:
questions = 30 correct_answers = 23 print(f"You got {correct_answers / questions :.2%} correct!") # You got 76.67% correct!
При форматировании числа в процентах точность округления всегда относится к количеству цифр после точки.
Заключение
Вот и все! Мы разобрали самые ходовые способы вывода чисел в нужном формате. Теперь вы знаете, как ограничить количество цифр в выводимом числе, количество знаков в дробной части числа, как вывести число в удобном для чтения виде и в виде процентного значения.
Перевод статьи Phil Best “Formatting Numbers for Printing in Python”.
Пингбэк: f-строки в Python - pythonturbo
Спасибо большое за информацию
Пингбэк: Как округлить число до сотых в Python