Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果没有php函数ceil,我如何对数字进行取整_Php - Fatal编程技术网

如果没有php函数ceil,我如何对数字进行取整

如果没有php函数ceil,我如何对数字进行取整,php,Php,我正在尝试构建一个输出将被四舍五入的函数。我知道有一个php函数,但我想将此函数用于其他用途 您希望ceil不使用天花板 intval($number + .5) 这是同样的事情,但您仍然在使用内置函数 编辑:显然,上述解决方案并没有像我在PHP中预期的那样工作。您可以使用round函数获得类似的效果 round($number + .5) 或者类似于另一个答案: $n = intval($number + .5); if($n < $number){ $n++; } $n=

我正在尝试构建一个输出将被四舍五入的函数。我知道有一个php函数,但我想将此函数用于其他用途

您希望ceil不使用天花板

intval($number + .5)
这是同样的事情,但您仍然在使用内置函数

编辑:显然,上述解决方案并没有像我在PHP中预期的那样工作。您可以使用round函数获得类似的效果

round($number + .5)
或者类似于另一个答案:

$n = intval($number + .5);
if($n < $number){
    $n++;
}
$n=intval($number+.5);
如果($n<$number){
$n++;
}

您希望ceil不使用天花板

intval($number + .5)
这是同样的事情,但您仍然在使用内置函数

编辑:显然,上述解决方案并没有像我在PHP中预期的那样工作。您可以使用round函数获得类似的效果

round($number + .5)
或者类似于另一个答案:

$n = intval($number + .5);
if($n < $number){
    $n++;
}
$n=intval($number+.5);
如果($n<$number){
$n++;
}
这样可以吗

function newceil($num)
{
    $re=intval($num);
    if($re<$num) $re++;
    return $re
}
函数newceil($num)
{
$re=intval($num);
如果($re可以这样做吗

function newceil($num)
{
    $re=intval($num);
    if($re<$num) $re++;
    return $re
}
函数newceil($num)
{
$re=intval($num);

如果你想向上/向下取整,$re 您可以使用
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向上取整

如果要向上/向下取整 您可以使用
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四舍五入

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

$input = 3.141592653;
$intVersion = (int) $input;
if($intVersion<$input) $intVersion++;
return $intVersion
$input=3.141592653;
$intVersion=(int)$input;

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

$input = 3.141592653;
$intVersion = (int) $input;
if($intVersion<$input) $intVersion++;
return $intVersion
$input=3.141592653;
$intVersion=(int)$input;
如果($intVersion您可以使用
round()
floor()
number\u format()
对数字进行取整

echo round(153.751);     // 154
echo floor(153.751); // 153
echo number_format(153.751); // 154
您可以使用
round()
floor()
number\u format()
对数字进行取整

echo round(153.751);     // 154
echo floor(153.751); // 153
echo number_format(153.751); // 154

你也可以在phpDo中使用
round
,你想要整数取整的算法吗?我不认为这是一个与语言相关的问题。我不知道你为什么要从头开始重新实现这个问题,但无论如何:你尝试了什么?还有,问题是什么?取整有点模糊。你是向正无穷方向取整?还是向正无穷方向取整可以从零开始吗?我们可以知道这个目的,这样我们可以提供帮助。你也可以在phpDo中使用
舍入
,你想要舍入数字的算法吗?我不认为这是一个与语言相关的问题。我不知道你为什么要从头开始重新实现它,但在任何情况下:你尝试了什么?还有,问题是什么?舍入有点模糊。你是向正无穷大舍入?还是向零舍入?也许我们知道这个目的,这样我们可以提供帮助。?有趣的方法,从来没有这样想过:-)我曾经在AS3中做过类似的事情,我不记得为什么了。我真的很想知道提问者为什么要这样做。这种方法肯定会有类似于
ceil
函数的开销。
echo-ceil(2.1)。“\t”.intval(2.1+0.5);
给出
32
。有趣的方法,从来没有想到过它:-)我曾经在AS3中做过类似的事情,我不记得为什么。我很想知道提问者为什么要这样做。这种方法肯定会有类似于
ceil
函数的开销。
echo ceil(2.1)。“\t”.intval(2.1+0.5);
给出
32