PHP计算逻辑问题

时间:2015-01-19 14:00:32

标签: php math logic rounding

不确定我在这里是不是很傻。可能是显而易见的事情,但当你几个小时一直盯着同一个问题时,它开始让你发疯。

我正在使用PHP进行一些计算,所有这些都非常直接。

我有一张名为sales的表,说:

total, costs
424.53, 125
853.91, 125

获取我需要的数据......

gross = total - cost
vat   = gross - ( gross / 1.2 )
profit = gross - vat

我需要生成一个报告,因此对于销售数据库中的每一行,我需要循环并运行上述计算以获取我需要的数据。

如果我加上总和和成本之和,然后计算出上面的总额,增值税和利润,并将增值税和利润计算到2个小数点,那么这些值就是预期的。

我遇到的问题是我在每行循环并计算总额,增值税和利润。如果我不对每一行进行圆形展示并获利,而是围绕最终总计,它们会与我添加sum(total)sum(costs)的值相匹配。

但是在我生成的报告中,如果我没有围绕增值税并获利,那么他们就不会显示两位小数,这是我需要的。

实际代码如下,非常确定它比代码更像是一个逻辑问题。

    $sum = 0; // Test variable
    foreach( .. as ... )
    {
        // Assigning $total and $cost

        $gross = $total - $cost;

        $data['profit'] = $gross;

        // If I round this VAT so vat shows to two decimal points, $sum becomes off by some pence.
        // If I don't round it but then round $sum after the loop, it matches the echo statement value which is the correct amount
        $vat = $this->vat( $gross );

        $data['vat'] = $vat;

        $profit = $gross - $vat;

        $data['net_profit'] = $profit;

        $sum += $profit;

        $array[] = $data;
    }

    echo "131547.82<br><br>";

    echo $sum;
    die;

0 个答案:

没有答案