Калькулятор ежемесячных платежей ошибка в вычислении
Я создал систему, которая будет рассчитывать ежемесячный платеж по кредиту. Все вроде бы в порядке, но когда я вычисляю месяц и буду отображать его в datagridview, первые месяцы в порядке, а остальные месяцы только совпадают друг с другом. Он должен быть другим, пока не достигнет нулевого баланса.
Months Sequence Cash Flow Interest Principal Balance Interest 2 August, 2018 1 1,555.00 93.64 229.12 7,261.88 87.64 September,2018 2 1,555.00 93.64 229.12 7,261.88 87.64 October, 2018 3 1,555.00 93.64 229.12 7,261.88 87.64 November, 2018 4 1,555.00 93.64 229.12 7,261.88 87.64 December, 2018 5 1,555.00 93.64 229.12 7,261.88 87.64
Что я уже пробовал:
Вот мой код
'Formula Sample P = MonthPay.Text 'Monthly dblMonthlyPayment Num = NoTerms.Text 'Number of Terms r = Val(IntRate.Text / 100) / 12 'Interest dblIntRate I = r PVIFA = 1 / I - 1 / (I * (1 + I) ^ Num) pmt = dblPV / PVIFA IPmt = (r * intSeq) * (Num ^ 12) * PV.Text 'Clear the ListBox grd_order.ClearSelection() Dim dt As New DataTable Dim dr As DataRow Dim result As New List(Of String) dt.Columns.AddRange(New DataColumn() {New DataColumn("Months", GetType(String)), _ New DataColumn("Seq#", GetType(Integer)), _ New DataColumn("Cash Flow", GetType(String)), _ New DataColumn("Interest", GetType(String)), _ New DataColumn("Principal", GetType(String)), _ New DataColumn("Balance", GetType(String)), _ New DataColumn("Interest2", GetType(String))}) Do While intSeq <= intNumOfPayments CashFlow = dblPV PI = dblBalance * I PP = MonthPay.Text - PI P = dblBalance - PP interestPaid2 = dblBalance * int2 Dim thisDay As DateTime = DateTime.Today.AddMonths(intSeq) While thisDay = Now() thisDay = thisDay.AddMonths(1) End While dr = dt.NewRow dr("Months") = String.Format("{0:Y}", thisDay) dr("Seq#") = intSeq dr("Cash Flow") = String.Format("{0:N}", CashFlow) dr("Interest") = String.Format("{0:N}", PI) dr("Principal") = String.Format("{0:N}", PP) dr("Balance") = String.Format("{0:N}", P) dr("Interest2") = String.Format("{0:N}", interestPaid2) dt.Rows.Add(dr) intSeq += 1 Loop grd_order.DataSource = dt
willifritz
Только значения для intSeq и thisDay изменяются внутри вашего цикла, я действительно не понимаю, что вы хотите вычислить, но все остальные значения точно такие же для каждой итерации, как они вычисляются один раз вне цикла while.
И я бы рекомендовал вам дать вашим переменным четко читаемые имена.