tl; dr Это то, что называется банковским округлением .
Режим округления по умолчанию -
ROUND_HALF_EVEN (to nearest with ties going to nearest even integer)
, что и естьвы видите: связи между 4
и 5
и между 5
и 6
переходят в четные числа (4
и 6
соответственно).
Если выЕсли вам нужен другой режим округления, вам нужно указать его явно.
Возможны следующие варианты:
ROUND_CEILING (towards Infinity),
ROUND_DOWN (towards zero),
ROUND_FLOOR (towards -Infinity),
ROUND_HALF_DOWN (to nearest with ties going towards zero),
ROUND_HALF_EVEN (to nearest with ties going to nearest even integer),
ROUND_HALF_UP (to nearest with ties going away from zero), or
ROUND_UP (away from zero).
ROUND_05UP (away from zero if last digit after rounding towards zero would have been 0 or 5; otherwise towards zero)
Документация: https://docs.python.org/2/library/decimal.html#decimal.Context
См. аргумент rounding
дляquantize()
: https://docs.python.org/2/library/decimal.html#decimal.Decimal.quantize