1

我的任务是将简单的电子表格转换为要在网站上使用的 HTML 表单,该表单将使用 JavaScript 进行一些计算。这完全没有问题,除非我对财务功能一无所知,而且我遇到了 FV(未来价值)。

这是电子表格:

B3 = 100
B4 = 10
B5 = B4*12
B6 = 12
B7 = 3
B8 = (1+B6)^(1/12)-1
B9 = ABS(FV(B8,B5,B3/(1+B7),,1)) // and here lies the problem

这就是 OO.org 的帮助对 FV 的评价:

返回基于定期、固定付款和固定利率(未来价值)的投资的未来价值。

语法:FV(Rate; Num_periods; Payment; PV (optional); Type)

问题是:如何使用上述参数计算 FV?

样本值:

B3 = 100          1        1        2
B4 = 10           1        2        2
B9 = 21,751.06    12.39    26.28    52.55
4

4 回答 4

15

这是 Javascript 中 Excel 的确切 FV 公式。它也适用于 0% 的利息

function FV(rate, nper, pmt, pv, type) {
  var pow = Math.pow(1 + rate, nper),
     fv;
  if (rate) {
   fv = (pmt*(1+rate*type)*(1-pow)/rate)-pv*pow;
  } else {
   fv = -1 * (pv + pmt * nper);
  }
  return fv.toFixed(2);
}
于 2013-06-19T15:42:30.053 回答
1

终值只是本金加上未偿还期间的所有应计利息。

在您的示例中,本金为 100 (B3),时间为 10 年(120 个月 -- B5),利率为 B8。您确定 B6 不等于 0.12 或 12%?这将是 12% 的年利率,或每月约 1%(产生 12% 年利率的月利率的实际公式是 1.12 ^ (1/12) - 1)。

未来值只是本金乘以(1 + 利率)^ 时间,或者在这种情况下,大约是 100*(1.01)^120。

于 2009-11-23T03:29:49.340 回答
0

这是一个计算器,您可以参考。

去Javascript源码,可以发现计算未来值的公式是这样的:

function checkNumber(input, min, max, msg)

{

    msg = msg + " field has invalid data: " + input.value;



    var str = input.value;

    for (var i = 0; i < str.length; i++) {

        var ch = str.substring(i, i + 1)

        if ((ch < "0" || "9" < ch) && ch != '.') {

            alert(msg);

            return false;

        }

    }

    var num = 0 + str

    if (num < min || max < num) {

        alert(msg + " not in range [" + min + ".." + max + "]");

        return false;

    }

    input.value = str;

    return true;

}



function computeField(input)

{

    if (input.value != null && input.value.length != 0)

        input.value = "" + eval(input.value);

    computeForm(input.form);

}



function computeForm(form)

{

    if ((form.payments.value == null || form.payments.value.length == 0) ||

        (form.interest.value == null || form.interest.value.length == 0) ||

        (form.principal.value == null || form.principal.value.length == 0)) {

        return;

    }



    if (!checkNumber(form.payments, 1, 480, "# of payments") ||

        !checkNumber(form.interest, .001, 99, "Interest") ||

        !checkNumber(form.principal, 1, 10000000, "Principal")) {

        form.fv.value = "Invalid";

        return;

    }



    var i = form.interest.value;

    if (i > 1.0) {

        i = i / 100.0;

        form.interest.value = i;

    }

    i /= 12;


   var pow = form.principal.value;

    for (var j = 0; j < form.payments.value *12; j++)

        pow = (pow * i) + (pow *1);

    form.fv.value = pow

        form.totalint.value = (form.fv.value - form.principal.value)

}
于 2009-11-23T01:10:48.403 回答
-2

您将很难将 Excel 迁移到 Web。
相反,您最好考虑使用 Google 文档。

但是,如果您只需要这个特定的电子表格,那么此页面将解释该公式。
此外,您可以在Compound Interest Wiki 页面上找到信息。

于 2009-11-23T01:21:05.573 回答