简体   繁体   中英

Round to 5 and 9 php

I'm looking for a formula to round a value to nearest 5 or 9 if the val is less than 5 make 5 if is bigger than 5 make 9.

Example:

$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

Is there a way to extract always the last 2 digits and convert to 5 or nine ?

Any help is appreciated !

how about:

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

This is working

<?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);

You can use any number as $suffix to round to it.

other way, working with strings... :

<?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);
?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM