В чем отличие 2 режимов (ROUND_UP, ROUND_CEILING) округления Decimal чисел в python?
Объясните в чем отличие 2 режимов (ROUND_UP
, ROUND_CEILING
) округления Decimal
чисел в python.
В документации какие-то странные фразы, которые я не могу расшифровать.
ROUND_UP
- "Round away from zero"ROUND_CEILING
- "Round towards Infinity"
А результаты эти 2 режима дают одинаковые. (По крайней мере я не смог найти отличий)
Для примера код
from decimal import *
num = Decimal('3.4555')
print(num.quantize(Decimal('1.00'), ROUND_CEILING))
print(num.quantize(Decimal('1.00'), ROUND_UP))
Ответы (1 шт):
Отвечу на вопрос. Спасибо @AlexeyTen за наводку, что разница очевидна для отрицательных чисел.
Если просто, то модификатор ROUND_UP
работает как ROUND_CEILING
на положительных числах, и как ROUND_FLOOR
на отрицательных.
Фраза из документации "Round away from zero" тогда становится понятной. При округлении ROUND_UP
мы "движемся" по направлению от 0 на числовой прямой, то есть уменьшаем данное число, если оно отрицательное, и увеличиваем, если положительное.