-1

我正在尝试创建一个“储蓄目标”计算器,但我不知道如何(如果可能)实现以下目标:-

  1. 计算给定利率达到目标所需的每月付款金额。(可以用底部的公式来做到这一点 - 在 javascript 中,但无论如何应该是有意义的)

  2. 根据未来某个时间点的 1 笔或多笔一次性付款调整每月付款金额。(不能解决这个问题)

例如,我可以计算出以 7% 的利率在 30 年内实现 300,000 英镑的余额为 245.91 英镑。

但我不确定如果引入第 5 年的一次性付款,我该如何调整这个金额:-

e.g. 
yr 1 - x
yr 2 - 4 - x
yr 5 - 10000 lump sum
yr 6 - 30 - x

其中 x 是每月需要的金额,考虑到在第 30 年仍能达到 300,000 英镑的一次性付款。

同样适用于相同的情况,但在第 15 年再次付款。

e.g. 
yr 1 - x
yr 2 - 4 - x
yr 5 - 10000 lump sum
yr 6 - 14 - x
yr 15 - 10000 lump sum
yr 16 - 30 - x

我正在考虑计算每笔一次性付款的未来价值(因此第 5 年为 10000,在 25 年内以 7% 的复合增长率),然后从所需金额中减去该金额(因此 300,000 英镑 - 54,274.33 美元 = 245725.67 英镑),然后根据 245725.67 英镑计算所需的每月付款)。

它接近(301,827.53 英镑,每平方厘米 201.42 英镑),但我敢肯定,作为计算的一部分,我错过了一些东西,因为它在更大的值上走得更远。

我猜这是因为在第 5 年我重复计算了有效的付款金额(因为下面的计算仍将考虑每月付款,即使它已被覆盖) - 我是否需要减去复利被覆盖的每月付款?

我希望以上内容是有道理的,任何帮助将不胜感激。

使用的计算:-

ir - 利率 fv - 终值(残值) np - 期数(年) pv - 现值 ^ = 功率,因为​​我不知道如何在这里做:-P

(ir/12)[fv - pv(1 + ir/12) ^ 12np] / [(1 + ir/12) ^ 12np - 1]

或者在 Javascript 中

function calc1(ir, fv, np, pv){
/*
ir - interest rate 
fv - future value (residual value)
np - number of periods (years)
pv - present value
*/
var a, b, c, d;

a = ir / 12;
b = (1 + ir/12);
c = 12 * np;
d = (a * (fv - (pv * Math.pow(b, c)))) / (Math.pow(b, c) - 1);
return d;

}
4

1 回答 1

1

是的,您对重复计算的预感是正确的,您也可以将第 5 年的金额写为

x + (10000 - x)

其中第一项由几何和公式覆盖。由于问题是线性的,第二项需要减少x,但x未知会导致可能被打破的圆圈。

但是,为了避免过多的代码混乱并保留一些灵活性,可以建议像第一次猜测那样做,并在确切的主计算公式上使用割线公式(您用于验证的那个从 x= 获得 302k 201) 细化结果。使用第一个猜测xx+1初始化割线方法。

于 2016-03-25T14:32:37.170 回答