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

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

  • автор:

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

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

a = [1000, 2.4, 2.23456754323456, 2754.344] for i in a: print('%.3f' % i) # 3 знака после запятой 
1000.000 2.400 2.235 2754.344 

Отслеживать
ответ дан 4 апр 2017 в 18:55
Кирилл Малышев Кирилл Малышев
10.8k 1 1 золотой знак 18 18 серебряных знаков 34 34 бронзовых знака
а чем запись print(‘%.3f’ % i) лучше(хуже) записи x = float(‘<:.3f>‘.format(x)) ?
12 янв 2019 в 13:56
@Rashid-s, рекомендуется в Python 3 использовать format. stackoverflow.com/questions/12382719/…
12 янв 2019 в 14:04

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

d = round(3.14, 1) print(d) # 3.1 

Отслеживать
ответ дан 23 авг 2020 в 13:01
41 2 2 бронзовых знака
Вы пробовали тестировать ваше решение на примерах из вопроса?
23 авг 2020 в 13:12

Почему вы считаете, что ТС что-то услажняет? round (123.000001, 3) # 123.0 , но ожидаемый результат другой. Он является нескромным желанием? Если да, то почему?

23 авг 2020 в 13:28

def toFixed(f: float, n=0): a, b = str(f).split('.') return '<>.<><>'.format(a, b[:n], '0'*(n-len(b))) f = 7.123 print(toFixed(f, 10)) # 7.1230000000 print(toFixed(f, 2)) # 7.12 

Отслеживать
ответ дан 5 апр 2017 в 8:50
vadim vaduxa vadim vaduxa
8,932 14 14 серебряных знаков 24 24 бронзовых знака

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

from decimal import Decimal number = Decimal('0.424242') number = number.quantize(Decimal('1.000')) number = float(number) # возвращает true, т.к. оба типа данных теперь float print( 0.424 == number ) 

Отслеживать
ответ дан 11 апр 2020 в 13:23
Nick Alexander Nick Alexander

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

print(int(n * 1000) / 1000)

print(n * 1000 //1 /1000)

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

Можно ли в Python во float отбросить k знаков после запятой?

Здравствуйте, вопрос следующий.
Допустим, есть число 17.212123445.
А нужно записать в память только первую цифру после запятой. Каким образом сделать это при помощи вещественных и целочисленных операций?

  • Вопрос задан более трёх лет назад
  • 151952 просмотра

1 комментарий

Простой 1 комментарий

nmkru

Попробуйте через ф-ию round(укажите сколько значков после запятой надо вывести)
>>>a=5.4323321
>>>a.__round__(2)
5.43
>>>a
5.4323321
>>>a.__round__(4)
5.4323

Решения вопроса 1
ненавижу javascript

>>> a=13.946 >>> print(a) 13.946 >>> print("%.2f" % a) 13.95

Ответ написан более трёх лет назад
Нравится 15 10 комментариев
Timebird @Timebird Автор вопроса

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

Нужно не выводить на печать последние две цифры, а хранить в памяти число с двумя последними цифрами

ну не вопрос допишите b = float(«%.2f» % a)
Timebird @Timebird Автор вопроса
Спасибо, работает. 🙂
Timebird: Ты только не делай так. Для таких случаев есть Decimal.
Roman Kitaev: это норм способ, decimal тянуть для такой задачи оверхед)
Михаил: Ты не знаешь ведь задачу) Вдруг, он там деньги считает?

aklim007

О_о вместо того чтоб воспользоваться хотя бы функцией round для округления до нужной точности, вы серьёзно предлагаете сначала преобразовать в строку а потом обратно в число?

Roman Kitaev: тогда мой вариант может стать причиной того что баланс не сойдется))

Артём Клименко: да мне похеру, я могу и scipy зафигачить чтоб число округлить, и да, я предлогаю именно это, потому что это самый что ни на есть стандартнейший способ, быстро сделать то что в ввопросе описано, и при этом следующий прогер который будет это читать сразу поймет о чем речь. а не будет ебсти себе мозг чо там у нас раунд возвращает, да и приведение в строку и обрато способ куда шустрей по ресурсам)

aklim007

Михаил: round — стандартная bult-in функция, существующая для выполнения конкретной задачи, именно она и является стандартным способом, впрочем, таки да, вы не обязаны со мной соглашаться, но указанный вами способ вызывает у меня стойкое чувство жжения в районе поясницы.

З.Ы. if len(str(bool(a))) == 4:

Как оставить несколько знаков после запятой, а остальные отбросить?

Несколько сотен знаков после запятой у числа ПИ
Добрый день! Несколько дней пролшло с начала работы в Matlab. Предложили реализовать процедуру.

Как отбросить лишние знаки после запятой внутри формулы
Здравствуйте! В общем нужно отбросить лишние знаки после запятой после вычислений, но через.

Отбросить знаки после запятой
есть код: import numpy a = numpy.random.uniform(-80, 100, size=(10,10)) print(a) b, c = , .

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

814 / 526 / 214
Регистрация: 22.12.2017
Сообщений: 1,495

1 2 3 4 5 6 7 8 9 10
n=4.3576 n=str(n) dot=n.index('.') print(f'Число обработанное ') #либо n=4.3576 rnd=lambda n,koef:(n*(10**koef)//1)/10**koef print(f'Число обработанное ')

1007 / 351 / 59
Регистрация: 28.02.2013
Сообщений: 931

1 2 3
>>> round(2.65, 1) 2.6 >>>

попробуйте функцию round.

А сорри вам же надо без округления. тогда round и не подойдет.

Просто Лис

Эксперт Python

5318 / 3332 / 1021
Регистрация: 17.05.2012
Сообщений: 9,765
Записей в блоге: 9

>>> ('%.3f' % 4.3576)[:-1] '4.35'

Обычно так не делают.
-118 / 92 / 13
Регистрация: 26.06.2013
Сообщений: 4,529
Как Вы привели пример, так не делают или вообще так не отбрасывают цифры?
Просто Лис

Эксперт Python

5318 / 3332 / 1021
Регистрация: 17.05.2012
Сообщений: 9,765
Записей в блоге: 9

Не могу придумать пример, когда может потребоваться откинуть значащие цифры в числе, а не округлить. Даже ‘%.2f’ % n , что в привели, оказывается округляет.

Добавлено через 28 секунд
откинуть значащие цифры = значит, потерять в точности. Нет смысла.

Регистрация: 02.12.2022
Сообщений: 92
x = format(float(n), ‘.2f’)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Отбросить знаки после запятой до двух разрядов
Убрать лишние знаки после запятой, не визуализацию в ячейке, а вообще их откинуть.. 1.999 >> 1.9

Как ограничить количество знаков после запятой, не ограничивая количество до запятой?
Как ограничить количество знаков после запятой, не ограничивая количество до запятой? Если, к.

Отбросить знаки после запятой и вывести в ячейку Excel
ActiveCell.Value = Round(zenazaod, 2) MsgBox (Round(zenazaod, 2)) Первая строка должна вывести.

Visual Basic 2013 сложение чисел, округление до 2 знаков после запятой, отбрасывание знаков
Как сложить несколько чисел из TextBox, округлить их, отбросить знаки после запятой? показать.

Как ограничить число знаков после запятой?
надо ограничить число знаков до 4-х после запятой. В x. вот программа, а вівод x конечно в конце: .

Как ограничить количество знаков после запятой?
возникли сложности в том что в ответе в форме Picture4.Print arifmeticheskoe_index не знаю как.

Округление чисел и его особенности

Python 3 логотип

Округлением чисел в Python занимается встроенная функция round.

round(number[, ndigits]) — округляет число number до ndigits знаков после запятой (по умолчанию, до нуля знаков, то есть, до ближайшего целого)

   

Со школы многие привыкли, что, когда (N + 1) знак = 5, а последующие знаки равны нулю, округление производится всегда в большую по модулю сторону.

Однако, как видно из примеров, в Python это не так. Здесь используется так называемое "Банковское округление", то есть округление к ближайшему чётному.

На практике это оказывается не так уж и важно, например:

 Что-то не так, правда? На самом деле, всё именно так, как и задумывалось. Просто из-за проблем с точностью чисел с плавающей точкой это число чуть больше, чем 2.85, а потому округляется до 2.9.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

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

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