programing

숫자를 가장 가까운 10으로 반올림하는 방법은 무엇입니까?

nasanasas 2020. 9. 17. 07:58
반응형

숫자를 가장 가까운 10으로 반올림하는 방법은 무엇입니까?


PHP에서 가장 가까운 10으로 숫자를 반올림하려면 어떻게해야합니까?

내가 가지고 있다고 말하면 23어떤 코드를 사용하여 반올림 30합니까?


floor() 내려갑니다.

ceil() 올라갈 것입니다.

round() 기본적으로 가장 가까운 곳으로 이동합니다.

10으로 나누고 셀을 수행 한 다음 10을 곱하여 유효 숫자를 줄입니다.

$number = ceil($input / 10) * 10;

편집 : 나는 오랫동안 이렇게 해왔지만 TallGreenTree의 대답은 더 깨끗합니다.


round($number, -1);

이것은 $ number를 가장 가까운 10으로 반올림합니다. 반올림 모드를 변경하기 위해 필요한 경우 세 번째 변수를 전달할 수도 있습니다.

여기에 더 많은 정보 : http://php.net/manual/en/function.round.php


실제로 가장 가까운 변수로 반올림 할 수있는 함수를 찾고 있었는데이 페이지가 계속 검색되었습니다. 그래서 마침내 직접 함수를 작성하게되었을 때 다른 사람들이 찾을 수 있도록 여기에 게시 할 것이라고 생각했습니다.

이 함수는 가장 가까운 변수로 반올림됩니다.

function roundToTheNearestAnything($value, $roundTo)
{
    $mod = $value%$roundTo;
    return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}

이 코드 :

echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';

다음을 출력합니다.

1230
1235
1230
1169

이 질문에는 많은 답변이 있으며 아마도 모두가 당신이 찾고있는 답을 줄 것입니다. 그러나 @TallGreenTree가 언급했듯이 이에 대한 기능이 있습니다.

그러나 @TallGreenTree의 대답의 문제는 반올림하지 않고 가장 가까운 10으로 반올림한다는 것입니다.이 문제를 해결하려면 반올림하기 위해 +5숫자를 더하십시오. 반올림하려면 -5.

따라서 코드에서 :

round($num + 5, -1);

round mode반올림에는를 사용할 수 없습니다 . 왜냐하면 정수가 아닌 분수 만 반올림하기 때문입니다.

가장 가까운 값으로 반올림 100하려면 사용하십시오 +50.


div를 10으로 한 다음 ceil을 사용하고 10으로 mult

http://php.net/manual/en/function.ceil.php


시험

round(23, -1);


라운드를 통해 "속임수"를 사용할 수 있습니다.

$rounded = round($roundee / 10) * 10;

We can also avoid going through floating point division with

function roundToTen($roundee)
{
  $r = $roundee % 10;
  return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}

Edit: I didn't know (and it's not well documented on the site) that round now supports "negative" precision, so you can more easily use

$round = round($roundee, -1);

Edit again: If you always want to round up, you can try

function roundUpToTen($roundee)
{
  $r = $roundee % 10;
  if ($r == 0)
    return $roundee;
  return $roundee + 10 - $r;    
}

$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30

Try this:

ceil($roundee / 10) * 10;

Just round down to the nearest 10, and then add 10.

round($num, -1) + 10

My first impulse was to google for "php math" and I discovered that there's a core math library function called "round()" that likely is what you want.


For people who want to do it with raw SQL, without using php, java, python etc. SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';


I wanted to round up to the next number in the largest digits place (is there a name for that?), so I made the following function (in php):

//Get the max value to use in a graph scale axis, 
//given the max value in the graph
function getMaxScale($maxVal) {
    $maxInt = ceil($maxVal);
    $numDigits = strlen((string)$maxInt)-1; //this makes 2150->3000 instead of 10000
    $dividend = pow(10,$numDigits);
    $maxScale= ceil($maxInt/ $dividend) * $dividend;
    return $maxScale;
}

Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor function

function roundToTheNearestAnything($value, $roundTo,$type='round')
    {
        $mod = $value%$roundTo;
        if($type=='round'){
            return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
        }elseif($type=='floor'){
            return $value+($mod<($roundTo/2)?-$mod:-$mod);
        }elseif($type=='ceil'){
            return $value+($mod<($roundTo/2)?$roundTo-$mod:$roundTo-$mod);
        }

    }

echo roundToTheNearestAnything(1872,25,'floor'); // 1850<br>
echo roundToTheNearestAnything(1872,25,'ceil'); // 1875<br>
echo roundToTheNearestAnything(1872,25,'round'); // 1875

This can be easily accomplished using PHP 'fmod' function. The code below is specific to 10 but you can change it to any number.

$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;

OUTPUT: 100


to nearest 10 , should be as below

$number = ceil($input * 0.1)/0.1 ;

Try this......pass in the number to be rounded off and it will round off to the nearest tenth.hope it helps....

round($num, 1);

참고URL : https://stackoverflow.com/questions/1619265/how-to-round-up-a-number-to-nearest-10

반응형