PHP/SQL 数学带来疯狂的结果

标签 php mysql

这是代码;


    //calculate parts total
    $sqlparts = "SELECT jobNumber, SUM(unitPrice*quantity) AS c FROM s_partOrders WHERE jobNumber = $jobNumber";
    $rowparts = mysqli_query($con, $sqlparts) or die('Action failed: ' . mysqli_error($con));
    $rsparts = mysqli_fetch_assoc($rowparts);
    $partsTotal = $rsparts[c];
    if(empty($rsparts[c]))
    {
        $partsTotal = 0;
    }

    // calculate payments total
    $serviceTotal = $row[costLabour]+$row[costCallout]+$row[costDelivery]+$partsTotal;
    $sqlpayments = "SELECT jobNumber, amount, SUM(amount) AS sumAmount FROM s_payments WHERE jobNumber = $jobNumber";
    $rowpayments = mysqli_query($con, $sqlpayments) or die('Action failed: ' . mysqli_error($con));
    $rspayments = mysqli_fetch_assoc($rowpayments);
    $paymentsTotal = $rspayments[sumAmount];
    if(empty($rspayments[sumAmount]))
    {
        $paymentsTotal = 0;
    }
    $amountDue = $serviceTotal - $paymentsTotal;
    $gst = round($serviceTotal/11, 2);
    $exGST = $serviceTotal-$gst;

    echo "($partsTotal + $row[costLabour] + $row[costCallout] + $row[costDelivery]) - $paymentsTotal = $amountDue";

这是输出结果!

(1850 + 1321.14 + 0 + 0) - 3171.14 = 4.54747350886E-13

不过,这只发生在某些记录上。其他人计算得很完美。有点奇怪! 所有值都存储在数据库中 double .

最佳答案

哈哈,抱歉,是你,而不是结果,疯狂:)

4.54747350886E-13 本质上是 0 (忽略小数点后第 12 位的精度),这就是 (1850 + 1321.14 + 0 + 0) - 3171.14 计算为。这个结果没有任何问题。

4.54747350886E-13 = 0.0000000000005

关于PHP/SQL 数学带来疯狂的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27559301/

相关文章:

PHP:在表单数据中操作多维数组?

php - php中的behat、mink和selenium有什么区别

php - 是否有 PHP Array Group By 函数?

mysql - 是否可以使用身份生成进行 Hibernate 批处理?

php - 如何在 php 中显示我的数据库中的 image_url 中的图像

java - 使用java在Xampp中mysql和apache服务的状态(运行/未运行)

php while循环只显示跨多个表的mysql查询的一个结果

php - 使用 Mysql 的脚本或 PHP 在 MySQL 表中重新生成 ID 行

mysql:查询返回根据特定用户的分数排名

php - 如何获取选中的checkbox对应的值