Rounding

The rounding module provides different rounding strategies for monetary calculations.

RoundingMode Enum

class moneyx.rounding.RoundingMode[source]

Bases: object

Constants for various rounding modes.

HALF_UP: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'HALF_UP'
HALF_DOWN: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'HALF_DOWN'
BANKERS: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'BANKERS'
HALF_EVEN: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'BANKERS'
DOWN: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'DOWN'
UP: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'UP'
CEILING: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'CEILING'
FLOOR: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'FLOOR'
HALF_ODD: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'HALF_ODD'
HALF_TOWARDS_ZERO: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'HALF_TOWARDS_ZERO'
HALF_AWAY_FROM_ZERO: Literal['HALF_UP', 'HALF_DOWN', 'BANKERS', 'DOWN', 'UP', 'CEILING', 'FLOOR', 'HALF_ODD', 'HALF_TOWARDS_ZERO', 'HALF_AWAY_FROM_ZERO'] = 'HALF_AWAY_FROM_ZERO'

Rounding Functions

Rounding utilities for Money objects.

This module provides functionality for rounding decimal values according to different rounding strategies.

Available rounding modes:
  • HALF_UP: Classic rounding. If the fractional part is >= 0.5, rounds up.

  • HALF_DOWN: If the fractional part is > 0.5, rounds up; if it’s exactly 0.5, rounds down.

  • BANKERS (HALF_EVEN): Banker’s rounding. Rounds to the nearest even number when exactly 0.5.

  • HALF_ODD: Rounds to the nearest odd number when exactly 0.5.

  • DOWN: Always truncates (towards zero).

  • UP: Always rounds away from zero.

  • CEILING: Always rounds towards positive infinity.

  • FLOOR: Always rounds towards negative infinity.

  • HALF_TOWARDS_ZERO: If exactly 0.5, rounds towards zero.

  • HALF_AWAY_FROM_ZERO: If exactly 0.5, rounds away from zero.