Excelには、数値を指定された倍数に切り上げる/切り下げるMROUND関数があります。
=MROUND(600, 400) //--> 800
=MROUND(14,4) //--> 16
=MROUND(0.5,2) //--> 0
PHPの同等の機能は何ですか?
何もない場合、どのようにしますか?
Excelには、数値を指定された倍数に切り上げる/切り下げるMROUND関数があります。
=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);
入力を検証して、それらが数値であることを確認し、ゼロ除算を回避する必要があります。