Я студент-программист первого года и пытаюсь сделать калькулятор платежей по ипотеке. Пользователи вводят сумму займа и процентную ставку, выбирают 15 или 30 лет на срок, и их ежемесячный платеж должен быть рассчитан. Я думаю, что математика правильная, но я думаю, что у меня возникают проблемы с преобразованием типов данных. Единственный результат, который я могу вычислить, - «Бесконечность». Я также пробовал объявлять все переменные как парные, но никакой разницы.Получите «бесконечность» в результате расчета платежей по закладной в Visual Basic
Ниже приведен фрагмент кода, с которым я столкнулся, и опция Strict On включена в полный код. Любые советы будут очень признательны!
Dim decLoanAmount As Decimal
Dim decInterestRate As Decimal
Dim decFifteen As Decimal = 180D
Dim decThirty As Decimal = 360D
Dim decNumberOfMonths As Decimal
Dim dblPayment As Double
Dim decPayment As Decimal
' Did user enter a numeric value?
If IsNumeric(txtLoanAmount.Text) And IsNumeric(txtInterestRate.Text) Then
decLoanAmount = Convert.ToDecimal(txtLoanAmount.Text)
decInterestRate = Convert.ToDecimal(txtInterestRate.Text)
' Is Loan Amount greater than zero?
If decLoanAmount > 0 And decInterestRate > 0 Then
If radFifteen.Checked = True Then
decNumberOfMonths = decFifteen
ElseIf radThirty.Checked = True Then
decNumberOfMonths = decThirty
End If
' Calculate the monthly payments as a double
dblPayment = (decLoanAmount * (decInterestRate/12/100) * (1 + (decInterestRate/12/100) _
^decNumberOfMonths))/((1 + (decInterestRate/12/100)^decNumberOfMonths) - 1)
' Convert double to decimal
decPayment = Convert.ToDecimal(decPayment)
' Display monthly payment
lblPayment.Text = decPayment.ToString("C2")
Else
If decLoanAmount < 0 Then
MsgBox("Please enter a valid loan amount.", , "Input error")
End If
If decInterestRate < 0 Then
MsgBox("Please enter a valid interest rate.", , "Input error")
End If
End If
Else
' Display error message if user entered a negative value.
MsgBox("Please enter a numeric value.", , "Input Error")
End If
End Sub
Я предлагаю факторинговых его немного, и проверять эти значения как и следовало ожидать - например, '(decInterestRate/12/100)' повторяется в расчете, поэтому почему бы не рассчитать этот фронт и проверить значение так, как вы ожидали. –
Кроме того, 'decPayment = Convert.ToDecimal (decPayment)' не собирается делать много ... –
Вы не ожидаете, что люди здесь будут писать и/или отлаживать код для вас, не так ли? Покажите нам некоторые исследования, представите пример ввода, вывод, объясните немного больше. Предположите, что кода выше не было, думаете ли вы, что вы описали, чтобы помочь вам? – Neolisk