Я учусь на первом курсе программирования и пытаюсь сделать калькулятор ипотечных платежей. Пользователи вводят сумму кредита и процентную ставку, выбирают 15 или 30 лет в качестве продолжительности срока, и их ежемесячный платеж должен быть рассчитан. Я думаю, что математика верна, но я думаю, что у меня проблемы с преобразованием типов данных. Единственный результат, который я могу рассчитать, это «Бесконечность». Я также пытался объявить все переменные как Doubles, но без разницы.
Ниже приведен фрагмент кода, с которым у меня возникли проблемы, и Option 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)
повторяется в расчете, так почему бы не вычислить это заранее и проверить, что значение соответствует вашим ожиданиям. - person Rowland Shaw   schedule 08.12.2014decPayment = Convert.ToDecimal(decPayment)
не собирается много делать... - person Rowland Shaw   schedule 08.12.2014decPayment = Convert.ToDecimal(dblPayment)
? - person Ňɏssa Pøngjǣrdenlarp   schedule 08.12.2014