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,以确保它们是数字,并避免被零除。