基于Javascript

时间:2016-08-09 13:20:47

标签: javascript calculator finance

我有一个高级的PMT计算。我已经给出了一个例子来完成,虽然代码会给我正确的答案,但它只适用于那个例子。

我正在使用HP 17bII计算器来验证我的结果,这些结果必须相同。

现值: PV - -1000

未来价值: FV - 0

利率: IYR - 8

频率: FREQ - 12

付款次数: N - 60

提前号码付款: ADV - 3

这些是值和预期结果,即 PMT 19.88

在计算器的公式中,该函数调用另外两个函数, SPPV USPV 。下面有解决方法。

PV   = -10000;         //Present Value
FV   = 0;              //Future Value
IYR  = 8;              //Interest Rate
FREQ = 12;             //Payment Frequency
ADV  = 3;              //No. of advance payments
TERM = 57;             //Term of the Loan
N    = 57 + 3;         //The N is the sum of ADV + TERM

SIR  = IYR / FREQ;         //Interest rate for the SPPV var
UIR  = (IYR / 100) / FREQ; //Interest rate for the USPV

SPPV = (1 / (Math.pow(((1 + SIR) / 100), N)));
USPV = (Math.pow((1 + UIR), TERM) - 1)/(UIR*Math.pow((1+UIR), TERM));

PMT  = Math.abs((PV - FV * SPPV)/(USPV + ADV));

任何帮助都将非常感谢。对不起,如果这是重复或其他,我已经广泛搜索。

谢谢!

1 个答案:

答案 0 :(得分:2)

我发现了我哪里出错了。这是我更新的代码。这是 N USPV var中切换 TERM 的问题。我觉得很傻。

        SIR = IYR / FREQ;
        UIR = (IYR / 100) / FREQ;
        N   = ADV + TERM;

        SPPV = 1 / (Math.pow((1 + (SIR / 100)), N));
        USPV = (Math.pow(1 + UIR, TERM) - 1) / (UIR * (Math.pow(1 + UIR, TERM)));

        PMT = Math.abs((PV - FV * SPPV) / (USPV + ADV));