Я могу только говорить за свой опыт. Я использую DAL и DTO, и я все еще способен к выполнению довольно сложных запросов (соединения и все), и также я в состоянии обратиться к или пользовательскому SQL SP каждый раз, когда мне нужно. Это сделало мою жизнь легче, мой код последовательный и мои крайние сроки более достижимый.
Это в основном расчет погашения ипотеки .
Предполагая, что начало больше, чем конец, и этот процент составляет от 0 до 1 (т. Е. 0,1 для 10% годовых)
Сначала рассмотрим, какую часть платежа вы хотите выплатить.
Principal = start - end
Ежемесячный платеж составляет выдано:
pay_a = (interest / 12) / (1 - (1+interest/12) ^ (-months))) * Principal
Затем вам нужно учесть дополнительные проценты. Это просто равно сумме оставшейся основной суммы, умноженной на ежемесячные проценты
pay_b = interest / 12 * end
. Таким образом, общий платеж составляет
payment = (interest / 12) * (1 / (1 - (1+interest/12) ^ (-months))) * Principal + end)
В приведенном вами примере
Start: 100000
End: 50000
Months: 70
Interest: 8%
pay_a = 896.20
pay_b = 333.33
Payment = 1229.54
. Когда я тестировал эти значения в Excel, после 70 платежей оставшаяся ссуда составляла 50 000. Предполагается, что вы платите проценты за условное вознаграждение до того, как платеж будет производиться каждый месяц.
Возможно, самый простой способ подумать об этом - разделить ссуду на две части, одна из которых подлежит погашению полностью и другая часть, где вы ничего не платите. Вы уже рассчитали ежемесячную плату за первую часть.
You can keep paying the interest of every month; then, you will alway owe the same amont.
Owe_1 = a
Int_2 = Owe_1*(InterestRate/12)
Pay_2 = Int_2
Owe_2 = Owe_1 + Int_2 - Pay_2 # ==> Owe_1 + Int_2 - Int_2 = Owe_1
Int_3 = Owe_2*(InterestRate/12)
Pay_3 = Int_3
Owe_3 = Owe_2 + Int_3 - Pay_3 # ==> Owe_2 + Int_3 - Int_3 = Owe_2 = Owe_1