四舍五入为 5 和 9 菲律宾比索


Round to 5 and 9 php

我正在寻找一个公式,如果 val 小于 5,则使值四舍五入到最接近的 5 或 9,如果大于 5,则使 5 使 9。

例:

$RoundToFive = ceil('232' / 5) * 5;
echo floor($RoundToFive  * 2 ) / 2; //Result is 235 Is good
$RoundToNine = ceil('236' / 5) * 5;
echo floor($RoundToNine  * 2 ) / 2; //Result is 240 but i need 239

有没有办法始终提取最后 2 位数字并转换为 5 或 9 位?

任何帮助不胜感激!

怎么样:

function funnyRound($number){
    $rounded = ceil($number / 5) * 5;
    return $rounded%10?$rounded:$rounded-1;
}

这是有效的

<?php
function roundToDigits($num, $suffix, $type = 'floor') {
    $pow = pow(10, floor(log($suffix, 10) + 1));
    return $type(($num - $suffix) / $pow) * $pow + $suffix; 
};
$RoundToNine = ceil('236' / 5) * 5;
echo roundToDigits($RoundToNine,5);
echo roundToDigits($RoundToNine,9);

您可以使用任何数字作为$suffix四舍五入到它。

换句话说,使用字符串...

<?php
function round59($NUMB){
    //cast the value to be Int
    $NUMB = intval($NUMB);
    //Get last number
    $last_number = intval(substr($NUMB, -1)); 
    $ROUND_NUMBER = 5;
    if($last_number<=5)
        $ROUND_NUMBER = 5;
    else
        $ROUND_NUMBER = 9;
    //Remove Last Character
    $NUMB = substr($NUMB, 0, -1);
    // now concat the results 
    return intval($NUMB."".$ROUND_NUMBER) ; 
} 
echo round59(232);
echo round59(236);
?>