未来价值计算未返回预期结果

时间:2011-10-05 14:19:02

标签: php excel function financial

具有以下FV功能

private static function fv($r,$n,$p,$pv=0)
{
    $sum = $pv;
    for ( $i=0;$i<$n;$i++ ) {
     $sum += ($sum * $r) + $p;
    }
    return $sum;
}

这些是我传递的值:

0.0067 444 1834.58

这是我期待从我的桌面检查中得到的价值:4983453.613 这是我从我的方法得到的:5036155.12

让我疯了。我已经尝试了一系列其他在线功能;他们都没有工作!

3 个答案:

答案 0 :(得分:0)

我刚刚通过Excel电子表格运行(将单元格A1设置为0,将单元格A2设置为=A1 + (A1*0.0067) + 1834.58,复制到A445(表示从0开始的444次迭代)。最后一次迭代出现5036155.12说你的功能。

你如何计算你说你期待的4983453.613?你有双重检查你的方法吗?我不会在任何阶段得到它。

前三次迭代的结果如下:

1834.58
3681.451686
5540.697412

和最后三个:

4965710.242
5000815.08
5036155.122

答案 1 :(得分:0)

private static function fv($r=0,$n=0,$pv=0)
{

    for ( $i=0;$i<$n;$i++ ) {
        $pv+=($pv*$r);
    }
    return $pv;
}

echo fv(0.0067,444,1834.58);

有点整理,上面应该可以解决问题.. $ p在任何时候都没有设置,因为你的范围,你可以在函数内重新调整$ pv,而不必定义$ sum。

答案 2 :(得分:0)

这是一个舍入错误,但只有0.0067不够精确。

对于$r = 0.0067,我得到的结果与您的结果相同。

对于$r = 0.00666666666666666666666,我得到了你想要的结果。

我建议您传递$r = 1 / 150以获得最佳精确度。