Как оставить 3 знака после запятой в python
Перейти к содержимому

Как оставить 3 знака после запятой в python

  • автор:

Фиксированное количество знаков после запятой в Python

Есть ли в python аналог функции toFixed() в JS? Мне нужно что-то вроде этого:

Прямого аналога нет. Можно попробовать

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

Мне кажется что вы слегка усложняете. Есть чудесная функция round(), в которую в можете передать число, а через запятую передать количество знаков после. Так как всё равно там будет округление

Я для этого использую встроенный модуль. Понятно, что он возвращает Decimal, но я потом обратно преобразую во float.

если нужно не округлить, а именно обрезать знаки после запятой n = float(input())

print(int(n * 1000) / 1000)

print(n * 1000 //1 /1000)

a=input() print(float(a[:5])) #если заранее известно количество знаков

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

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

Фиксированное количество знаков после запятой в Python

Есть ли в python аналог функции toFixed() в JS? Мне нужно что-то вроде этого:

Ответы (7 шт):

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

Прямого аналога нет. Можно попробовать

Я для этого использую встроенный модуль. Понятно, что он возвращает Decimal, но я потом обратно преобразую во float.

Мне кажется что вы слегка усложняете. Есть чудесная функция round(), в которую в можете передать число, а через запятую передать количество знаков после. Так как всё равно там будет округление

если нужно не округлить, а именно обрезать знаки после запятой n = float(input())

Операции форматирования строк. Выражения форматирования строк. Бинарный оператор %

Операции форматирования строк позволяют выполнять подстановку в строки значений различных типов за одно действие в нужном (форматированном виде). Таким образом, строка получает удобное представление.
Например, одним из полезных применений операций форматирования строк является вывод значений чисел с плавающей запятой с указанием фиксированной точности (заданного количества знаков после запятой).
Операции форматирования строк могут выполняться одним из двух способов:

  • с помощью выражений форматирования строк. Эти выражения базируются на модели функции printf() языка C;
  • с помощью метода format() .
2. Выражения форматирования строк. Правила создания. Бинарный оператор %

Выражения форматирования строк используют модель функции printf() языка C. Чтобы создать выражение форматирования строки используется бинарный оператор % .

В наиболее общем случае выражение форматирования строки имеет вид:

  • format_string – строка форматирования;
  • list_of_objects – список объектов.

Строка форматирования format_string может содержать:

  • символы строки, которые не воспринимаются как спецификаторы формата. Такие символы представляются в том виде, в котором они есть;
  • специальные символы или спецификаторы формата, перед которыми следует символ %. Иными словами, если в форматированной строке встречается символ %, то один или несколько символов следующих за ним воспринимаются как спецификаторы формата. Например: «%s», «%.2f».

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

  • name — ключ в словаре. Это случай, когда происходит форматирование строк из словаря;
  • flags — перечень флажков. С помощью флажков можно задавать, например, выравнивание, наличие начальных нулей (0) и тому подобное;
  • width — общая ширина поля для представления строки;
  • .precision — количество знаков после десятичной запятой;
  • code — символ спецификатора формата (смотрите таблицу ниже). Он определяет каким образом представлять данные из перечня list_of_objects .

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

  • s — вывод строки. Здесь используется функция str(x) , где x — объект из списка list_of_objects . Более подробно о работе функции str() можно прочитать здесь;
  • r — так же как s , но используется функция repr(x) . Работа функции repr() подробно описывается здесь;
  • c — одиночный символ;
  • d — десятичное целое число;
  • i — целое число;
  • u — то же, что и d ;
  • o — восьмеричное целое число;
  • x — шестнадцатеричное целое число;
  • X — то же, что и x , но шестнадцатеричные цифры возвращаются в верхнем регистре;
  • e — вещественное число в экспоненциальной форме;
  • E — то же, что и e . В этом случае алфавитные символы возвращаются в верхнем регистре;
  • f , F — вещественное число в десятичном представлении;
  • g , G — вещественное число e , E или f ;
  • % — символ % .

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

  • .3 – указание того, что выводится 3 знака после запятой;
  • f – указание того, что выводится вещественное число в десятичном представлении.
3. Примеры форматирования целочисленных значений

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

Результат выполнения программы

4. Пример, демонстрирующий форматирование чисел с плавающей запятой

Результат выполнения программы

5. Пример, демонстрирующий форматирование строк и одиночных символов

В примере демонстрируется использование спецификаторов формата r , s , c при образовании выражений форматирования строк.

Обрезать до трех знаков после запятой в Python

Используйте дополнительный float() вокруг него, если вы хотите сохранить его как float.

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

Я нашел другое решение (оно должно быть более эффективным, чем обходные методы «string witchcraft» ):

Как насчет этого:

[EDIT]

Учитывая дополнительные комментарии, которые, как я полагаю, вы захотите сделать:

Точность с плавающей запятой не будет такой, какой вы хотите:

(все примеры относятся к Python 2.6.5)

Используйте десятичный модуль. Но если вы должны использовать float и все равно каким-то образом принуждать их к заданному числу десятичных знаков, преобразование в строку назад обеспечивает (довольно неуклюжий, я боюсь) способ сделать это.

Это нормально только в этом конкретном случае.

Просто немного измените номер:

1324343032.324 7 25235

дает вам 1324343032.325

Попробуйте это вместо этого:

Другой вариант для trun_n_d:

Еще один вариант (единственный) для trun_n_d [это предполагает, что ‘ n ‘ — это str, а ‘ d ‘ — это int]:

trun_n_d дает вам желаемый результат в Python 2.7 и Python 3.6

trun_n_d (1324343032.324325235,3) возвращает 1324343032.324

Аналогично, trun_n_d (1324343032.324 7 25235,3) возвращает 1324343032.324

Примечание 1 В Python 3.6 (и, возможно, в Python 3.x) что-то вроде этого работает просто отлично:

Но, таким образом, призрак закругления всегда скрывается вокруг.

Примечание 2 В подобных ситуациях из-за внутренних чисел Python, таких как округление и отсутствие точности, работать с n как с str намного лучше, чем с использованием его аналога int; Вы всегда можете бросить свой номер на поплавок в конце.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *