贷款计算器方程错误 C#

Loan Calculator Equation error C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace IndividualAssignmentLoan {

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        jmToday.Caption = Format(Now, "DDDD, D/MMMM/YYYY")
    }

    protected void btnCalculate_Click(object sender, EventArgs e)
    {
        double amount = double.Parse(jmLoanAmount.Text);
        double downPay = double.Parse(jmDownPayment.Text);
        double interest = double.Parse(jmInterestRate.Text);
        int period = int.Parse(jmLoanPeriod.Text);

        Double monthlyPay;
        Double loanCost;

        monthlyPay = ((amount * interest) / 1) - (Math.Pow(1/(1 + interest), period));
        loanCost = monthlyPay * (period * 12);

        jmMonthlyPayment.Text = monthlyPay.ToString();
        jmTotalLoanCost.Text = loanCost.ToString();
    }
}
}

您好,我已经写到我不明白我的贷款计算器哪里出错了。我已经输入我的公式来获得贷款金额...

monthlyPay = ((amount * interest) / 1) - (Math.Pow(1/(1 + interest), period));

我尝试了其他方法来获得正确的金额,但似乎没有任何方法可以提供我需要的每月金额。谁能帮我算算公式。哦,我的时钟在上面哈哈...

jmToday.Caption = Format(Now, "DDDD, D/MMMM/YYYY")

让 btnClick 处理解析并将每月付款计算移至单独的方法:

double CalculateMonthlyPayment(double amount, double downPayment, int termInYears, double interestRate)
{
    int paymentsCount = MonthsPerYear * termInYears;
    double principal = amount - downPayment;

    if (interestRate == 0)
    {
        return principal / paymentsCount;
    }

    double monthlyRate = interestRate / MonthsPerYear;
    double coefficient = Math.Pow(1 + monthlyRate, paymentsCount);
    double monthlyPayment = principal * (monthlyRate * coefficient) / (coefficient - 1);

    return monthlyPayment;
}

MonthsPerYear 是一个具有明显值的常量。

TotalPayment 将是 paymentsCount * MonthlyPayment

请记住,您需要处理异常情况:amount <= 0downPayment < 0amount <= downPaymenttermInMonths < 1。还要决定是否允许负利率。

我讨厌老师教学生使用 double 进行 money-related 操作。永远使用小数,孩子们! 128位non-floating点好(https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/decimal)

无论如何,我想我破译了你的老师用公式的意图(至少可以说你的评论是模棱两可的)。我想你想要:

double actualAmountToPay = amount - downPay;
double monthlyPay = actualAmountToPay * interest / (1 - 1 / Math.Pow((1 + interest), period));
double totalCost = monthlyPay * (period * 12);