如何将一个数字四舍五入到最接近的可被16整除的数字


How can I round a number to the nearest number evenly divisible by 16?

我有一个简单的round函数。它四舍五入为偶数。我想确定这个数字能被16整除。有人知道把数字四舍五入到最接近的可被16整除的数字的简单方法吗?

$num=round(480/$other_num); //will output some number.
$num = 39;
$num = round($num / 16) * 16; // 32

简单的方法似乎是除以16,然后使用"经典圆"并乘以16。

$num=round(480/16)*16;

也许你可以用0xf对数字进行位和加1?

 function round16($num) {
    if ($num % 16 == 0) return $num;
    $num2 = $num;
    $remain = 0;
    do {
        $remain = --$num % 16;
    } while ($remain != 0 && $num >= $num2 - 7);
    if ($remain == 0) return $num;
    do {
        $remain = ++$num2 % 16;
    } while ($remain != 0);
    return $num2;
 }

可能不是最有效的方法。