定期储蓄账户利息计算php

时间:2016-03-09 14:46:02

标签: php math formula calculator

好的,我现在已经有几周的同样的问题而且无法完善它。

目标

建立一个定期存款储蓄账户系统,在该系统中打印出当前时间的总余额。

问题

我目前的等式:

如果利息 6%,用户每月支付 200 ,每月使用化合物,则余额将在6个月后 1,220.61

我正在 1217.13

我测试了不同的时间长度和许多不同的在线计算器,我的计算总是更少。

我的代码

<h2>Total Balance To Date</h2>
    <?php

    $p = 0; // Starting amount
    $i = 0.06; // Interest rate
    $c = 12; // compound frequency set to monthly
    $n = 6/12; // Current time invested set to 6 months
    $r = 200; // Monthly investment is 200

    $x = $i / $c;
    $y = pow((1 + $x), ($n * $c));

    if($p!=0)
    {
        $vf = $p * $y + ($r * ($y - 1) / $x);
    }
    else
    {
        $vf = 1 + $y + ($r * ($y - 1) / $x);
    }

    ?>

    <p>£<?php echo round($vf, 2, PHP_ROUND_HALF_UP); ?></p> // Comes out at 1217.13

链接到沙箱 https://3v4l.org/9X7OH

1 个答案:

答案 0 :(得分:1)

设置

q = pow(1.06 , 1.0/12) = 1.0048675505653430

和计算

200*(q+q^2+q^3+q^4+q^5+q^6) = 200*q*(q^6-1)/(q-1)

给出结果

1220.61037336530790

这显然是在线计算器的工作原理。对于名义利率,每月复合因子应该是

,这有点不对
q = 1 + 0.06/12 = 1.005

导致6个月后的平衡

1221.1758776293781

如你所见,你的配方几乎是正确的,它应该是

$vf = $p * $y + ($r * (1 + $x) * ($y - 1) / $x);

由于费率是在月初存入的,因此第一个费率会复合为r*(1+x)^6,最后一个费率会复合为r*(1+x)。但是,else分支中的第二个公式根本没有意义。