1

我正在尝试构建一个输出将被四舍五入的函数。我知道有一个 php 函数,但我想让这个函数用于另一个目的。

4

5 回答 5

4

你想要天花板而不使用天花板......

intval($number + .5)

这是同一件事,但您仍在使用内置函数。

编辑:显然,上面的解决方案不像在 PHP 中想要的那样工作。你可以使用round函数来达到类似的效果

round($number + .5)

或类似于另一个答案的东西:

$n = intval($number + .5);
if($n < $number){
    $n++;
}
于 2013-03-14T10:35:50.687 回答
1

这个可以吗?

function newceil($num)
{
    $re=intval($num);
    if($re<$num) $re++;
    return $re
}
于 2013-03-14T10:39:07.670 回答
1

您可以通过将小数部分转换为整数来切断小数部分,然后检查如此派生的值是否更小甚至初始值。

$input = 3.141592653;
$intVersion = (int) $input;
if($intVersion<$input) $intVersion++;
return $intVersion
于 2013-03-14T10:41:18.800 回答
0

如果你想向上/向下四舍五入你可以使用round方法

/* Using PHP_ROUND_HALF_UP with 1 decimal digit precision */
 echo round( 1.55, 1, PHP_ROUND_HALF_UP);   //  1.6
 echo round( 1.54, 1, PHP_ROUND_HALF_UP);   //  1.5
 echo round(-1.55, 1, PHP_ROUND_HALF_UP);   // -1.6
 echo round(-1.54, 1, PHP_ROUND_HALF_UP);   // -1.5

 /* Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision */
 echo round( 1.55, 1, PHP_ROUND_HALF_DOWN); //  1.5
 echo round( 1.54, 1, PHP_ROUND_HALF_DOWN); //  1.5
 echo round(-1.55, 1, PHP_ROUND_HALF_DOWN); // -1.5
 echo round(-1.54, 1, PHP_ROUND_HALF_DOWN); // -1.5

 /* Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_EVEN); //  1.6
echo round( 1.54, 1, PHP_ROUND_HALF_EVEN); //  1.5
echo round(-1.55, 1, PHP_ROUND_HALF_EVEN); // -1.6
echo round(-1.54, 1, PHP_ROUND_HALF_EVEN); // -1.5

/* Using PHP_ROUND_HALF_ODD with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_ODD);  //  1.5
echo round( 1.54, 1, PHP_ROUND_HALF_ODD);  //  1.5
echo round(-1.55, 1, PHP_ROUND_HALF_ODD);  // -1.5
echo round(-1.54, 1, PHP_ROUND_HALF_ODD);  // -1.5
?>

注意: ceil 向上取整

于 2013-03-14T10:39:50.607 回答
0

您可以使用round()andfloor()number_format()来向上取整数字。

echo round(153.751);     // 154
echo floor(153.751); // 153
echo number_format(153.751); // 154
于 2013-03-14T10:42:21.507 回答