Питон вывод с точностью

How to display a float with two decimal places?

I have a function taking float arguments (generally integers or decimals with one significant digit), and I need to output the values in a string with two decimal places (5 → 5.00, 5.5 → 5.50, etc). How can I do this in Python?

13 Answers 13

Since this post might be here for a while, lets also point out python 3 syntax:

You could use the string formatting operator for that:

The result of the operator is a string, so you can store it in a variable, print etc.

@alper: If the end goal was a float , you’d skip the intermediate string and just do round(myfloat, 2) ; float(‘%.2f’ % 5.0) it completely pointless (the string adds a zero, then parsing back to float discards it (because float has no concept of additional trailing zeroes).

This was new in Python 3.6 — the string is placed in quotation marks as usual, prepended with f’. in the same way you would r’. for a raw string. Then you place whatever you want to put within your string, variables, numbers, inside braces f’some string text with a or within that text’ — and Python evaluates as with previous string formatting methods, except that this method is much more readable.

>>> foobar = 3.141592 >>> print(f'My number is - look at the nice rounding!') My number is 3.14 - look at the nice rounding! 

You can see in this example we format with decimal places in similar fashion to previous string formatting methods.

Читайте также:  Database connection in html with php

NB foobar can be an number, variable, or even an expression eg f» .

Going forward, with new code I prefer f-strings over common %s or str.format() methods as f-strings can be far more readable, and are often much faster.

Источник

Форматирование чисел в 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”

Источник

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

введите сюда описание изображения

Читаю учебник Лутча по Питону 2011-го года издания и в нём описана такая ситуация: Проблема в том, что когда я эти операции ввожу у себя, то при обоих способах число выводится в форме str. Как полностью отобразить число?

3 ответа 3

Видимо, слова Лутца устарели.
Как видно — repr работает по другому.

введите сюда описание изображения

Однако суть вещей не изменилась и можна вывести «правду» при помощи форматирования вывода, как показано выше

Ну и я тоже докину вариант) Можно использовать встроенные модуль decimal , с помощью которого можно осуществлять вычисления с очень большой «точностью»

from decimal import Decimal x = Decimal(3.1415 * 2) print(x) # 6.28300000000000036237679523765109479427337646484375 # можно преобразовать к строке и "обрезать" до нужной длины print(Decimal(str(x)[:18])) # 6.2830000000000003 

Основной плюс Decimal в том, что он десятичный (как и следует из названия), а не двоичный, и всех этих . 0003623767. (артефактов округления до ближайшей двоичной дроби) вообще не будет при правильном использовании Decimal(‘3.1415’) * 2

a = 3.1415 * 2 n = 16 // количество знаков после запятой template = '' print(template.format(a)) 

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.25.43544

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Число с фиксированной точностью

Надо вывести число a типа float на экран c точностью не менее n знаков после запятой.
Python 3, без использования библиотек.

4 ответа 4

n = 5 a = 1.2345678912345 template = '' print(template.format(a)) 

Альтернативно еще есть функция format (а не метод для строк): format(2.123456789, «.5f») . Возможные аргументы для форматирования описаны по адресу https://docs.python.org/3/library/string.html#formatspec

Решение приемлемо, однако надо получить ответ с точностью НЕ МЕНЕЕ n цифр после запятой. Поэтому убирать лишние знаки после запятой необязательно — чем точнее тем лучше:)

А тогда не понятно, чем ограничивать вывод. Ведь из-за двоичного представления никто не гарантирует, что после последнего введенного числа после запятой будут одни нули. Например, в том же примере можете поменять n на 25, и посмотреть на результат.

@Jenyay,1)По поводу 25, ну так это у вас ошибка)) хотите сказать, что 1.234566678912345 не равно 1.234567891234500000000000? 2)Как это чем ограничивать вывод? Есть конечное рациональное число типа float. Если количество знаков после запятой больше n, просто выведите a.

@Sithell: сейчас уже поздно (это существующие ответы делает неверными), но слова «чем точнее тем лучше» следует в вопросе помещать. Сейчас ваш вопрос читается что вы хотите 2 в 2.000.. превратить ( 0 повторен n раз). Если вам нужен точный результат, то просто repr(a) вызовите (это не фиксированный формат). Формально, так как n не менее n цифр.

Источник

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