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

Excel具有MROUNDfunction,将数字向上/向下舍入到给定的倍数。

=MROUND(600, 400) //--> 800 =MROUND(14,4) //--> 16 =MROUND(0.5,2) //--> 0 

什么是PHP的等效函数?

如果没有,你会怎么做?

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); 

你需要validation你的input,以确保它们是数字,并避免被零除。