Excel 具有MROUND函数,可将数字向上/向下舍入到给定的倍数。
=MROUND(600, 400) //--> 800
=MROUND(14,4) //--> 16
=MROUND(0.5,2) //--> 0
PHP的等效函数是什么?
如果没有,你会怎么做?
您可以通过除以分母、四舍五入,然后再次乘以分母来达到相同的效果。例如:
function roundTo($number, $to)
{
return round($number/$to, 0)* $to;
}
echo roundTo(87.23, 20); //80
echo roundTo(600, 400) // 800
echo roundTo(14,4) // 16
echo roundTo(0.5,2) // 0
MROUND() 的 PHPExcel 实现
function MROUND($number,$multiple) {
if ((is_numeric($number)) && (is_numeric($multiple))) {
if ($multiple == 0) {
return 0;
}
if ((SIGNTest($number)) == (SIGNTest($multiple))) {
$multiplier = 1 / $multiple;
return round($number * $multiplier) / $multiplier;
}
return 'NAN';
}
return 'NAN';
} // function MROUND()
function SIGNTest($number) {
if (is_bool($number))
return (int) $number;
if (is_numeric($number)) {
if ($number == 0.0) {
return 0;
}
return $number / abs($number);
}
return 'NAN';
} // function SIGN()
基本逻辑是这样的:
$number= 600;
$unit= 400;
$remainder= $number % unit;
$mround = ($remainder < $unit/2) ? $number - $remainder : $number + ($unit-$remainder);
您需要验证输入以确保它们是数字并避免除以零。