是否有支持 NPER 函数的 NPER 或金融函数库?

发布于 2024-12-08 11:58:57 字数 744 浏览 2 评论 0原文

这两天我一直在网上搜寻一个具有与 Excel 类似功能的 JAVA 金融库,尤其是 NPER。我最接近的是这里的一个:NPER 公式,除非我在此处将其输入解算器:数学计算器使用以下内容:

((√((80*(1+.13*1)+(-1/.13)*0)/((3000*.13+80)*(1+.13*1)))/√(1+.13)))*100

我得到的数字与 excel 给我的数字不同。我使用的金额是欠款 3000 美元,利息 13%,每月付款 80 美元。 Excel 和在线计算器显示 49 个月(四舍五入 48.3 个月),但该公式给出的结果是 39.4 个月。有谁知道我可以在代码中实现一个java库来执行这样的计算?

谢谢。

I've been scouring the internet for the better part of two days looking for a JAVA financial library that has functions similar to Excel's, particularly NPER. the closest thing I've come to is the one here:NPER formula, except when I type that into a solver here:math calculator using the following:

((√((80*(1+.13*1)+(-1/.13)*0)/((3000*.13+80)*(1+.13*1)))/√(1+.13)))*100

I get a different number than what excel gives me. The values I'm using are 3000$ owed, 13% interest, 80$ monthly payment. Excel and calculators online indicate 49 months (48.3 rounded up), but that formula gives me 39.4 months. Does anyone know of a java library I can implement in my code to perform calculations like this?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月苍老的讽刺 2024-12-15 11:58:57

算术错误可能是因为 Java 使用整数数学。整数数学在每次运算后将值向下舍入,从而完全忽略小数点。考虑以下代码:

int xInt = 5;
int yInt = (xInt/2) * 3;

double xDouble = 5;
double yDouble = (xDouble/2) * 3;

yIntyDouble 的结果值不同。 yInt 为 6,而 yDouble 为 7.5。

在代码中,您应该通过附加小数位将整数值转换为双精度数或浮点数。像这样:

double val1 = (5/2)*3; // this equals 6, Don't do this
double val2 = (5.0/2.0)*3.0 // this equals 7.5, instead do this

The arithmetic errors are probably because Java is using Integer math. Integer math completely disregards the decimal point by rounding down the value after each operation. Consider the following code:

int xInt = 5;
int yInt = (xInt/2) * 3;

double xDouble = 5;
double yDouble = (xDouble/2) * 3;

The resulting values of yInt and yDouble are different. yInt is 6 while yDouble is 7.5.

In your code you should convert the integer values to doubles or floats by appending decimal places. like this:

double val1 = (5/2)*3; // this equals 6, Don't do this
double val2 = (5.0/2.0)*3.0 // this equals 7.5, instead do this
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文