PHP에서 가장 가까운 10으로 숫자를 반올림하려면 어떻게해야합니까?
내가 가지고 있다고 말하면 23
어떤 코드를 사용하여 반올림 30
합니까?
PHP에서 가장 가까운 10으로 숫자를 반올림하려면 어떻게해야합니까?
내가 가지고 있다고 말하면 23
어떤 코드를 사용하여 반올림 30
합니까?
답변:
floor()
내려갑니다.
ceil()
올라갈 것입니다.
round()
기본적으로 가장 가까운 곳으로 이동합니다.
10으로 나누고 셀을 수행 한 다음 10을 곱하여 유효 숫자를 줄입니다.
$number = ceil($input / 10) * 10;
편집 : 나는 오랫동안 이렇게 해왔지만 TallGreenTree의 대답은 더 깨끗합니다.
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
round($number, -1);
이것은 $ number를 가장 가까운 10으로 반올림합니다. 반올림 모드를 변경하기 위해 필요한 경우 세 번째 변수를 전달할 수도 있습니다.
여기에 더 많은 정보 : http://php.net/manual/en/function.round.php
23
것 20
이 아니라 30
그것은 항상 가장 가까운 10 둥근 모드하지 않습니다 도움이 단지 라운드 반 이후, 이후에 ROND 때문 x.
.
실제로 가장 가까운 변수로 반올림 할 수있는 함수를 찾고 있었는데이 페이지가 계속 검색되었습니다. 그래서 마침내 직접 함수를 작성하게되었을 때 다른 사람들이 찾을 수 있도록 여기에 게시 할 것이라고 생각했습니다.
함수는 가장 가까운 변수로 반올림됩니다.
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
라운드를 통해 "속임수"를 사용할 수 있습니다.
$rounded = round($roundee / 10) * 10;
부동 소수점 나누기를 피할 수도 있습니다.
function roundToTen($roundee)
{
$r = $roundee % 10;
return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}
편집 : round
이제 "음수"정밀도를 지원 하는 것을 몰랐습니다 (사이트에 잘 문서화되어 있지 않음) . 따라서 더 쉽게 사용할 수 있습니다.
$round = round($roundee, -1);
다시 편집 : 항상 반올림하려면 시도 할 수 있습니다.
function roundUpToTen($roundee)
{
$r = $roundee % 10;
if ($r == 0)
return $roundee;
return $roundee + 10 - $r;
}
나는 가장 큰 자리의 다음 숫자로 반올림하고 싶었으므로 (그 이름이 있습니까?) 다음 함수를 만들었습니다 (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