PHP';s相当于Excel';s MROUND函数,四舍五入到最近的倍数

PHP';s相当于Excel';s MROUND函数,四舍五入到最近的倍数,php,excel,rounding,Php,Excel,Rounding,Excel具有将数字向上/向下舍入为给定倍数的功能 =MROUND(600, 400) //--> 800 =MROUND(14,4) //--> 16 =MROUND(0.5,2) //--> 0 PHP的等效函数是什么 如果没有,您将如何做?MROUND()的PHPExcel实现 基本逻辑是: $number= 600; $unit= 400; $remainder= $number % unit; $mround = ($remainder < $u

Excel具有将数字向上/向下舍入为给定倍数的功能

=MROUND(600, 400) //--> 800
=MROUND(14,4)     //--> 16
=MROUND(0.5,2)    //--> 0
PHP的等效函数是什么


如果没有,您将如何做?

MROUND()的PHPExcel实现


基本逻辑是:

$number= 600;
$unit= 400;
$remainder= $number % unit;
$mround = ($remainder < $unit/2) ? $number - $remainder : $number + ($unit-$remainder);
$number=600;
$unit=400;
$rements=$number%单位;
$mround=($resident<$unit/2)$编号-$余数:$编号+($单位-$余数);

您需要验证输入,以确保它们是数字,并避免被零除。

您可以通过除以分母,四舍五入,然后再次乘以分母来实现相同的效果。例如:

函数roundTo($number,$to)
{
返回回合($number/$to,0)*$to;
}
回声圆图(87.23,20)//80
回音圆到(600400)//800
回音圆到(14,4)//16
echo roundTo(0.5,2)//0

真聪明!由于解释编辑,已接受此版本而不是以前接受的版本。总体而言,这是一个更好的答案。fineaddition.jpeg
$number= 600;
$unit= 400;
$remainder= $number % unit;
$mround = ($remainder < $unit/2) ? $number - $remainder : $number + ($unit-$remainder);