gpt4 book ai didi

c# - 具有不同结果的摊销时间表计算

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:12 24 4
gpt4 key购买 nike

我正在尝试构建一个小程序来生成一个字符串输出,它会告诉我一笔贷款的总偿还金额(每月的复利)。我正在使用两个在线计算器来验证我的工作原理,但两者各不相同。

  • 贷款金额:1000
  • 比率:7%
  • 持续时间:36 个月
  • 每月应偿还:30.78
  • 总偿还额:1108.04 英镑(这接近我的结果期待)

以上内容通过以下在线计算器验证:https://www.moneysupermarket.com/loans/calculator/

然而,在几乎所有其他在线计算器上我得到:

  • 每月还款额:30.88
  • 总偿还额:1,111.53 英镑

例子:

https://en-gb.calculatestuff.com/financial/loan-amortization-calculator

http://www.calculator.net/amortization-calculator.html?cloanamount=1000&cloanterm=3&cinterestrate=7&printit=0&x=69&y=15

此外,在我自己的代码中,我得到 1,111.53。所以我对哪个最终值是正确的有点困惑。我想更接近第一个金额 1,108.04,因为这是我被要求查找的值,但不确定我在这里缺少什么。

 public void CompoundCalculator(double lenderRate, double loanPeriodInMonths, double desiredLoanAmount){
var repaymentAmount = PMT(7, 36, 1000);
var balance = desiredLoanAmount;
var totalInterest = 0.00;

for (var i = 0; i < loanPeriodInMonths;i++)

{
var monthlyInterest = Math.Round(balance * ( (lenderRate / 1200) ),2);


balance -= Math.Round(repaymentAmount - monthlyInterest,2) ;
totalInterest += monthlyInterest;


}
//do something here later with totalInterest variable

}

public static double PMT(double yearlyInterestRate, int totalNumberOfMonths, double loanAmount)
{
var rate = (double)yearlyInterestRate / 100 / 12;
var denominator = Math.Pow((1 + rate), totalNumberOfMonths) - 1;
return (rate + (rate / denominator)) * loanAmount;
}

最佳答案

你的问题是你使用了错误的利率:你把月利率当作年利率/12,而实际上它是 (1+yearlyrate)^(1/12)-1(这是给出年利率的利率当你复合 12 次时。

例如,对于 7% 的利率,月利率约为 0.5654%,而不是您计算得出的 0.5833%。

将您的公式从 (double)yearlyInterestRate/100/12 替换为

Math.Pow(1+(yearlyInterestRate / 100),1.0/12)-1

应该给你正确的结果(每月约 30.7789 美元)

关于c# - 具有不同结果的摊销时间表计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46494528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com