0

对于下面的公式,我尝试将其重新创建为在我的一个模型中命名的方法nper。计算结果未达到预期(使用 Excel 中的 NPER 函数进行测试),我认为这是因为我编写方法的方式。

在此处输入图像描述

def nper(rate, pmt, pv, fv = 0, type = 0)
    a = pmt * (1 + rate * type) + (-1 / rate) * fv
    b = pv * rate + pmt * (1 + rate * type)
    c = Math.sqrt(a / b)
    d = Math.sqrt(1 + rate)
    e = (c / d) * 100
end

我尝试先计算括号,然后使用模块中的平方根函数Math来帮助计算其余部分。我正在尝试计算抵押贷款的期限。我哪里错了?

要进行测试,请执行以下操作:

nper(((3.5/100)/12), -561.31, 125000)

应收益率:~360(30年固定贷款)

利率除以 100,然后除以 12,因为是每个期间rate的利率。

4

2 回答 2

2

使用Math.log10(),下面的公式就像一个魅力。我稍微修改了一下,所以我可以使用 pmt 的否定版本,并使用 type 和 fv(未来值)。

def nper(rate, pmt, pv, fv = 0, type = 0)
  Math.log10((pmt*(1+rate*type)+(-1/rate)*fv)/(pv*rate+pmt*(1+rate*type))) / Math.log10(1 + rate)
end

参考:MrExcel.com 论坛主题

于 2012-12-23T05:28:41.440 回答
0

有一个名为 Exonio 的 gem:https ://github.com/Noverde/exonio它实现了一些 Excel 财务方法,包括nper

Exonio.nper(0.07 / 12, -150, 8000) # ==> 64.07334877066185
于 2016-01-26T16:16:05.640 回答