Python форматирование вывода float

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

Часто форматирование строк связано с их выводом на экран. Однако следует помнить, что на вывод передается уже сформированная строка. Создание строки, то есть вставка в нее данных в заданных форматах, является отдельной операцией. Готовая строка может быть, например, присвоена переменной, а не выводиться сразу на экран.

% — оператор форматирования строки

Оператор % по отношению к строкам выполняет операцию форматирования и вставки таким образом, что объект, стоящий справа от него, встраивается согласно определенным правилам в строку слева от него:

Такой способ форматирования считается старым потому, что заимствован из функции printf языка C, а в Python кроме него появились другие способы вставки данных в «строки-шаблоны». Однако в ряде случаев удобнее использовать оператор % .

Вывод вещественного числа с заданной точностью

Оператор деления / возвращает вещественное число. Если количество знаков после запятой бесконечно, интерпретатор Python выведит его с большим количеством знаков в дробной части:

С помощью оператора форматирования строки % можно выполнить округление числа до требуемой точности. Например, оставить только два знака после запятой. Для этого внутри строки, то есть в кавычках, записывают комбинацию символов, которая начинается со знака % . Далее ставят точку. Число после точки обозначает количество знаков после запятой. Символ f обозначает вещественный тип данных float .

Читайте также:  Simpledateformat in java pattern

Обратите внимание, переменная a содержит число с большим количеством знаков в дробной части. Строка ‘1.33’ является результатом выполнения выражения ‘%.2f’ % a . Функции print() передается готовая строка ‘1.33’ . Предварительно эту строку можно было бы присвоить отдельной переменной:

С другой стороны, по правую сторону от оператора форматирования строки не обязательно указывать переменную. Чаще здесь записывают непосредственно выражение. При этом берут его в скобки.

Строка, содержащая в себе спецификаторы преобразования, также может содержать обычные символы:

Символ d в формате вставки обозначает целое число (тип int ).

Оператор форматирования строк выполняет округление вещественных чисел, а не простое отбрасывание «лишних» цифр:

Вывод символа

Чтобы получить любой символ из таблицы Unicode, в спецификаторе используют букву c , при этом после знака оператора форматирования указывают код требуемого символа.

print('%c' % 189) print('%c' % 32400)

Вставка в строку значений словаря через ключи

ab = print('%(good)s, %(price).2f' % ab)

Вывод данных в поля заданной ширины

Бывает данные надо вывести в виде таблицы. Это значит, что каждый элемент данных выводится в поле определенной ширины, которая измеряется в знакоместах.

Например, вместо подобного вывода:

First 483 1.1 Second 9 10.7 
First 483 1.1 Second 9 10.7 

Для таких случаев в формате вставки элемента данных в строку указывается ширина поля (количество знакомест). Делается это сразу после знака процента.

print('%-7s %5d %8.1f' % ('First', 483, 1.1)) print('%-7s %5d %8.1f' % ('Second', 9, 10.65))

Знак «минус» заставляет данные выравниваться по левому краю. По умолчанию они выравниваются по правому:

print('%7s %5d' % ('First', 483)) print('%7s %5d' % ('Second', 9))

Строковый метод format

Строковый метод format вставляет переданные в него аргументы в строку, к которой применяется. В строке места вставки, или «поля замены», определяются фигурными скобками. Внутри скобок могут указываться индексы или ключи аргументов, переданных в метод format.

print("<>, <> and <>".format('A', 8, 'B')) print(", and ".format('A', 8, 'B'))

В format() может передоваться больше аргументов, чем имеется мест вставок в строке. В таком случае оставшиеся аргументы игнорируются.

nums = ['I', 'II', 'III', 'IV', 'V'] print("<> <> <>".format(*nums)) print(" ".format(*nums))

Вставка значений по ключу:

print(' = '.format(var='pi', value=3.14))
u = print('-'.format(**u)) print(''.format(**u)) print('-'.format('John', **u))
class House: size = 5 street = "Red" h = House() print(', '.format(h))

Метод format позволяет задавать ширину поля и выравнивание:

u = print('--'.format(**u)) print('10>-4>-'.format(**u)) print('--'.format(**u))
print('<>'.format(4/3)) print(''.format(4/3)) print(''.format(4/3)) print(''.format(4/3)) print(''.format(4/3))
1.3333333333333333 1.333333 1.33 1.33 1.333333e+00 

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

В последних версиях Python появилась возможность использовать так называемые форматированные строковые литералы (formatted string literals). В отличие от обычных строковых литералов перед f-строками ставится буква f .

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

user = input() print(f'Hello !') a = 4.5678 print(f'Result ')
print(f'Hello !') a = 4 b = 3 print(f'Result ')
John Hello John! Result 1.33 

Выравнивание строк другими строковыми методами

a = "Hello" print('|', a.center(10), '|') print(a.rjust(14)) print(a.ljust(10)) print(a.ljust(14, '.')) print(a.center(14, '.'))
| Hello | Hello Hello Hello. . Hello. 

Источник

Форматирование чисел в Python

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

Форматирование чисел с округлением

Сначала давайте рассмотрим форматирование чисел с плавающей запятой до заданного уровня округления. Есть два способа сделать это: можно указать нужное количество значащих цифр в целом или количество значащих цифр после десятичной точки. Начнем с первого.

Чтобы указать уровень точности округления, нам нужно использовать двоеточие (:), за которым следует десятичная точка, а также некоторое целое число, представляющее степень точности (количество знаков после запятой). При использовании f-строки мы помещаем всё это после значения, которое хотим отформатировать (в фигурных скобках) . Вместо этого также можно использовать метод format.

x = 4863.4343091 # пример числа с плавающей запятой print(f"") # использование f-строки print("".format(x)) # использование метода format

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

Как видите, наше довольно длинное число сократилось до шести цифр. Также следует отметить, что данная операция форматирования может производить еще и округление. Если, например, первоначальное число будет иметь значение 4863.435, то выведем в консоль мы 4863.44. Здесь используется округление до ближайшего четного числа (в английском языке banker’s rounding — «округление банкира»).

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

x = 4863.4343091 print(f"") # 4.86e+03

4.86e+03 означает 4,86 ​​x 10³, или 4,86 ​​x 1000, что равно 4860. Глядя на этот результат, мы видим, что получили три значащих цифры, как и хотели.

Итак, а как нам указать три десятичных знака после запятой? Для этого нужно просто добавить f .

x = 4863.4343091 print(f"") # 4863.434

f в данном случае указывает, что наше число типа float должно отображаться как «число с фиксированной точкой». То есть нам нужно определенное количество десятичных знаков. Мы также можем использовать f без числа, что по умолчанию означает точность 6 цифр после точки:

x = 4863.4343091 print(f"") # 4863.434309

Вывод числа с разбивкой на разряды

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

x = 1000000 print(f"") # 1,000,000 print(f"") # 1_000_000

При форматировании чисел с плавающей запятой и форматировании с округлением это тоже работает:

x = 4863.4343091 print(f"") # 4,863.434 print(f"") # 4_863.434

Вывод числа в процентах

Мы можем вывести число в качестве процентного значения, просто добавив символ % в конце параметров форматирования вместо f :

questions = 30 correct_answers = 23 print(f"You got correct!") # You got 76.67% correct!

При форматировании числа в процентах точность округления всегда относится к количеству цифр после точки.

Заключение

Вот и все! Мы разобрали самые ходовые способы вывода чисел в нужном формате. Теперь вы знаете, как ограничить количество цифр в выводимом числе, количество знаков в дробной части числа, как вывести число в удобном для чтения виде и в виде процентного значения.

1 комментарий к “Форматирование чисел в Python”

Источник

How to Format Float Values in Python

Here are 4 methods to format float in Python.

  1. Using the “format()” function
  2. Using the “%f” format specifier
  3. Using the “round()” function
  4. Using the “f-string” function

Method 1: Using the format() function

To format float values in Python, you can use the “format()” method. The format() method allows multiple substitutions and value formatting.

Example

x = 211911461911461819112146 y = 2**70 z = x / y print("".format(z))

The output returns a string. To get the output as float, use the float() function.

x = 211911461911461819112146 y = 2**70 z = x / y print(float("".format(z)))

Method 2: Using the “%f” format specifier

To format the float value up to two decimal places in Python, you can use the “%.2f” format specifier inside the “print()” function.

Example

x = 211911461911461819112146 y = 2**70 z = x / y print("%.2f" % z)

To format up to three decimal places, use the %.3f.

x = 211911461911461819112146 y = 2**70 z = x / y print("%.3f" % z)

You can see that when we are printing only two decimal places, it automatically rounds to the nearest integer.

Still, printing a number up to three decimal places does not go round to the nearest integer. The 0.496 prints as it is since we want a floating value up to three decimal places.

How to Use the %d Formatter in Python

You can also use floating point numbers in Python with the “%d” formatter. This returns the whole number in a floating point number.

floatNumber = 2.9876 print("%d" % floatNumber) 

Method 3: Using the round() function

The “round()” is a built-in Python method that returns the floating-point number rounded off to the given digits after the decimal point.

Example

x = 211911461911461819112146 y = 2**70 z = x / y print(round(z, 2))

But please note that the behavior of the round() function for floats can be surprising in some cases. For example, round(3.575, 2) gives 3.57 instead of the expected 3.58.

This is not a bug: it’s a result that most decimal fractions can’t be represented exactly as a float.

Method 4: Using the Python f-strings

Python f-String is an improvement over previous formatting methods. You can read more at PEP8.

Let’s use the f-strings to format the float value.

Example

x = 211911461911461819112146 y = 2**70 z = x / y print(f'')

It works well with long calculations with operators and does not need parenthesis.

Conclusion

You can use the %f format specifier or string.format() function to format the float values in Python. You can also use the round() method or the f-string approach.

Источник

Оцените статью