PHP舍入功能不适用于四舍五入

时间:2013-01-23 00:20:45

标签: php

对于下面的代码,有时值 $ endorsepoints 不是整数。我希望它可以四舍五入,向上或向下,具体取决于正常的数学规则。

然后,我想将四舍五入的数字输入两个MySQL表,评论提交

我希望数字按正常的数学规则向上或向下舍入。

当数字应该向下舍入(即5203.25)时,正确的舍入数字(即5203.00)会被添加到评论提交

当该数字应该被四舍五入(即5151.74)时,正确的舍入数字(即5152.00)被添加到提交。但是,在这种情况下,向下舍入的数字(即5151.00)被添加到评论。在这种情况下,如何将舍入后的数字转换为评论

   $endorsepoints = $endorsepoints * .01;

    $endorsepoints2 = ( $endorsepoints <= 10 ) ? 10 : $endorsepoints;

    $endorsepoints2 = round($endorsepoints2);





    $query1 = sprintf("INSERT INTO comment VALUES (NULL, %d, %d, '%s', %d, NULL)", $uid, $submissionid, $comment, $endorsepoints2);

    mysql_query($query1) or die(mysql_error());


    $query2 = sprintf("UPDATE submission SET points = (points + '$endorsepoints2') WHERE submissionid = '$submissionid'");

    mysql_query($query2) or die(mysql_error());

编辑:我希望始终在两个表中插入相同的数字。我的问题是:为什么不呢?

3 个答案:

答案 0 :(得分:0)

$endorsepoints3 = $endorsepoints2;
$endorsepoints2 = round($endorsepoints2);

if($endorsepoints3 > $endorsepoints2) {
    //rounded down
} else {
    //rounded uo
}

无论如何,我不确定你是否在问这个问题。

答案 1 :(得分:0)

首先,round()函数将始终正确舍入,即2.4变为2,2.6变为3,您是否正在寻找floor()和ceil()以及number_format()来舍入到最低或最高,得到小数“并了解它”?

此后就像使用if / else运行基于结果匹配的查询一样简单&lt; ==&gt;

答案 2 :(得分:-1)

使用ceil()代替round()

它仅向上舍入