我有一个高级的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));
任何帮助都将非常感谢。对不起,如果这是重复或其他,我已经广泛搜索。
谢谢!
答案 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));