public IEnumerable <Money> Allocate(Money money, RatioArray ratios) { var currency = money.Currency; decimal total = money.Amount; int len = ratios.Length; var dist = new decimal[len]; decimal last = total; for (var i = 0; i < len - 1; i++) { decimal amount = ratios[i] * total; last -= amount; yield return(new Money(amount, currency)); } yield return(new Money(last, currency)); }
public IEnumerable <Money> Allocate(Money money, RatioArray ratios) { var currency = money.Currency; decimal total = money.Amount; int decimalPlaces = currency.DecimalPlaces; int len = ratios.Length; var dist = new decimal[len]; decimal last = total; for (var i = 0; i < len - 1; i++) { decimal amount = RoundingAdjuster.Round(ratios[i] * total, decimalPlaces); last -= amount; yield return(Money.FromMajor(amount, currency)); } yield return(Money.FromMajor(last, currency, RoundingAdjuster)); }