Найти - Пользователи
Полная версия: decimal.Decimal
Начало » Python для новичков » decimal.Decimal
1
SLaVeRS9
Не могу понять, почему в записи
decimal.getcontext().prec = 2
pay = decimal.Decimal(str(1999 + 1.33))
присутствует преобразование в строку str

Если убрать str, то результат будет с кучей цифр после запятой.
Почему так?
terabayt
decimal.getcontext().prec = 6
pay = decimal.Decimal(1999) + decimal.Decimal(1.33)
PanovSergey
SLaVeRS9
Если убрать str, то результат будет с кучей цифр после запятой.
Почему так?
Потому что Decimal в отличии от float точный тип. Дробь.
Со str вы говорите конструктору создай мне Decimal точно равный 2000.33, без создай мне Decimal равный float(2000.33) вот и получается разница. Счас люди грамотные придут понятнее объяснят
SLaVeRS9
terabayt
Спасибо, но такую форму записи, как привели Вы, я знаю. Интересовал только ответ на конкретный вопрос)
SLaVeRS9
PanovSergey
Как я понимаю, со str он приводит ответ как строку?
Но ведь я изначально выше ограничиваю число до двух знаков после запятой:
decimal.getcontext().prec = 2
Почему тогда запись
pay = decimal.Decimal(1999 + 1.33) не будет соблюдать это условие?
PanovSergey
SLaVeRS9
Почему тогда запись…
The context for arithmetic is an environment specifying precision
Потому что выполнение идет не в Decimal а в float. Т.е. контекст действует только для операций по Decimal. Если хотите округлить есть метод quantize.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB