Money Utilities¶
Ratio Split¶
- hordak.utilities.money.ratio_split(amount, ratios, precision=None)¶
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 be3.33and6.66, which would sum to9.99, thereby loosing0.01.- Parameters:
amount (Decimal) – The amount to be split
ratios (list[Decimal]) – The ratios that will determine the split
precision (Optional[Decimal]) – How many decimal places to round to (defaults to the HORDAK_DECIMAL_PLACES setting)
Returns: list(Decimal)