【问题标题】:Regular savings account interest calculation php定期储蓄账户利息计算php
【发布时间】:2016-06-24 00:22:00
【问题描述】:

好的,我已经有几个星期了同样的问题,但无法完善它。

瞄准

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

问题

我现在的方程:

如果利息为 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

【问题讨论】:

  • 我得到 1215.10,所以...
  • 四舍五入前我得到 1020.17587763...
  • @MarcB:我猜你上个月忘记计算了。
  • 不,我在我的 php 中运行了这个确切的代码,并得到 $vf = float(1215.1003757506)
  • 我会添加一个沙盒链接

标签: php math formula calculator


【解决方案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 分支中的第二个公式根本没有意义。

【讨论】:

  • 这看起来棒极了,我正在做一些自动取款机。但后来我尝试了这个,当它运行不佳时,很乐意接受你的回答,再次感谢。
  • 我可以确认它运行良好,因此不需要 if 语句,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多