Фиксированное количество знаков после запятой в 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; Вы всегда можете бросить свой номер на поплавок в конце.