具有以下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
让我疯了。我已经尝试了一系列其他在线功能;他们都没有工作!
答案 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
以获得最佳精确度。