7

Excelには、数値を指定された倍数に切り上げる/切り下げるMROUND関数があります。

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

PHPの同等の機能は何ですか?

何もない場合、どのようにしますか?

4

3 に答える 3

6

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()
于 2012-06-08T13:25:23.303 に答える
1

基本的なロジックは次のとおりです。

$number= 600;
$unit= 400;
$remainder= $number % unit;
$mround = ($remainder < $unit/2) ? $number - $remainder : $number + ($unit-$remainder);

入力を検証して、それらが数値であることを確認し、ゼロ除算を回避する必要があります。

于 2012-06-08T13:28:48.543 に答える