如何使用JavaScript计算未来值(FV)

时间:2009-11-23 01:06:50

标签: javascript excel spreadsheet financial

我已经完成了将简单的电子表格转换为HTML表单以在网站上使用的任务,即使用JavaScript进行一些计算。这根本不是问题,除了我知道关于财务函数的 nothing ,我遇到了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(可选); Type)

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

示例值:

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

4 个答案:

答案 0 :(得分:11)

这是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);
}

答案 1 :(得分:0)

您可以参考a calculator

转到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)

}

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:-2)

您将很难将Excel移至网站 相反,您最好考虑使用Google文档。

但是如果你只需要这个特定的spreedsheet,那么this page就会解释这个公式 此外,您可以在Compound Interest Wiki page上找到相关信息。