P / Y C / Y - 计算每年复利期(P / Y)的付款(PMT)的未来价值(FV)

问题描述 投票:-2回答:1

我正在做一个TVM项目,并不太明白复利是如何转化为代码的。我使用BA II Plus金融计算器作为参考。

示例:如果每季度复利5%,则查找每月初支付100美元的未来价值10年。

在金融计算器中:

N:120(10y x 12m)

I / Y:5%(年利率)

P / Y:12(每年12次)

C / Y:4(每年4次)

PV:0

PMT:100

BGN:是的

FV:[CPT] [FV] => -15575.41334


这是未来的价值方法。

static public double fv(double r, int n, double pmt, double pv, int bgn) {
    return -(pv * Math.pow(1 + r, n) + pmt * (1 + r * bgn) * (Math.pow(1 + r, n) - 1) / r);
}

使用示例中的数字调用方法

//             rate     n    pmt  pv bgn
double fv = fv(0.05/12, 120, 100, 0, 1); // -15592.928894335751 which is wrong
java calculator financial tvm
1个回答
0
投票

看起来你在计算中遇到了数值误差。

浮点计算固有地受到舍入误差的影响,并且这些可能会累加并变得非常大。

例如。一般背景(长读):

https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

您可以尝试使用高精度计算库。

例如。这个答案中提到了一些好的选择:

https://stackoverflow.com/a/284588/9549171

编辑:您可以尝试使用https://herbie.uwplse.org/分析您正在使用的表达式(但是您的表达式上的Web版本超时,您将不得不下载他们的软件)

© www.soinside.com 2019 - 2024. All rights reserved.