所以,正如标题所说,我需要计算贷款的年利率。我有以下内容:
apr = (rate * ((Math.Pow((1 + rate), duration))) /
((Math.Pow((1 + rate), duration)) - 1)) -
(installment / (loanamount - extracost));
但它没有返回正确的值。我还尝试了另一个版本的方程式,效果更差:
apr = ((loanamount + extracost) * rate * Math.Pow((1 + rate), duration)) / (Math.Pow((1 + rate),duration) - 1);
计算都错了。我尝试调整一些括号并检查操作顺序。任何帮助将不胜感激!
答案 0 :(得分:3)
也许这听起来像是作弊,但我只是使用现有的VB财务库.NET。它用于年金,因此您必须将付款设为负数。
期限是全额付款(即15年抵押贷款有180笔付款,因此180) 付款是每个付款(所以每月付款额... x -1) 起始金额=原始贷款金额,不收取费用
double apr = Microsoft.VisualBasic.Financial.Rate(term,-payment,originalLoanAmt)
然后只需将答案乘以年度付款数(如果是每月12次),或者如果您希望%表示为3.25%的数字,那么也乘以100。
**请注意,您必须添加对Microsoft.VisualBasic程序集的引用。
答案 1 :(得分:2)
您计算的付款金额持续时间为付款次数。那不是APR。这就是我所看到的:
double apr, loanamount = 3000d, extracost = 7000d, rate = 0.05;
int duration = 1;
apr = ((loanamount + extracost) * rate * Math.Pow((1 + rate), duration)) / (Math.Pow((1 + rate),duration) - 1);
Console.WriteLine(apr);
duration = 2;
apr = ((loanamount + extracost) * rate * Math.Pow((1 + rate), duration)) / (Math.Pow((1 + rate),duration) - 1);
Console.WriteLine(apr);
duration = 3;
apr = ((loanamount + extracost) * rate * Math.Pow((1 + rate), duration)) / (Math.Pow((1 + rate),duration) - 1);
Console.WriteLine(apr);
输出
10500
5378.0487804878
3672.08564631245
只有第一个答案与您对A = Pe ^(rt)或者校长金额的类似计算的预期相同。
您需要的实际计算取决于法律管辖权和信贷/贷款类型。