Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
07 Июл 2024
2 мин
6096

Ограничение количество знаков после запятой в числе с плавающей точкой

Часто возникает задача ограничить количество знаков после запятой в числе с плавающей точкой. Например, есть число 13.949999999999999, и требуется округлить

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

При попытке использовать стандартную функцию round(), результат может быть неожиданным:

a = 13.949999999999999
print(round(a, 2))
# Вывод: 13.949999999999999

Так происходит из-за особенностей внутреннего представления чисел с плавающей точкой в компьютере.

Один из способов решения этой проблемы — использовать форматирование строк. В Python для этого есть несколько способов.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Использование функции format()

a = 13.949999999999999
print(format(a, '.2f'))
# Вывод: 13.95

В этом случае, число a преобразуется в строку, где количество знаков после запятой ограничено двумя.

Использование f-строк

a = 13.949999999999999
print(f'{a:.2f}')
# Вывод: 13.95

F-строки — это способ форматирования строк, который доступен начиная с версии Python 3.6.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Использование метода round() класса Decimal

from decimal import Decimal

a = Decimal('13.949999999999999')
print(round(a, 2))
# Вывод: 13.95

В этом случае используется класс Decimal из модуля decimal, который предоставляет более точное представление чисел с плавающей точкой.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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