Money Utilities

Ratio Split

hordak.utilities.money.ratio_split(amount, ratios)

Split in_value according to the ratios specified in ratios

This is special in that it ensures the returned values always sum to in_value (i.e. we avoid losses or gains due to rounding errors). As a result, this method returns a list of Decimal values with length equal to that of ratios.

Examples

>>> from hordak.utilities.money import ratio_split
>>> from decimal import Decimal
>>> ratio_split(Decimal('10'), [Decimal('1'), Decimal('2')])
[Decimal('3.33'), Decimal('6.67')]

Note the returned values sum to the original input of 10. If we were to do this calculation in a naive fashion then the returned values would likely be 3.33 and 6.66, which would sum to 9.99, thereby loosing 0.01.

Parameters:
  • amount (Decimal) – The amount to be split
  • ratios (list[Decimal]) – The ratios that will determine the split

Returns: list(Decimal)