计算APR

时间:2014-04-25 23:33:57

标签: c# math financial

所以,正如标题所说,我需要计算贷款的年利率。我有以下内容:

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);

计算都错了。我尝试调整一些括号并检查操作顺序。任何帮助将不胜感激!

2 个答案:

答案 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)或者校长金额的类似计算的预期相同。
您需要的实际计算取决于法律管辖权和信贷/贷款类型。