Como podemos arredondar um número para o 10 mais próximo no php?
Digamos 23
que sim, qual código eu usaria para arredondar 30
?
Como podemos arredondar um número para o 10 mais próximo no php?
Digamos 23
que sim, qual código eu usaria para arredondar 30
?
Respostas:
floor()
vai cair.
ceil()
vai subir.
round()
irá para o mais próximo por padrão.
Divida por 10, faça o teto e multiplique por 10 para reduzir os dígitos significativos.
$number = ceil($input / 10) * 10;
Edit: Eu tenho feito dessa maneira por muito tempo .. mas a resposta de TallGreenTree é mais limpa.
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
round($number, -1);
Isso arredondará $ número para o próximo 10. Você também pode passar uma terceira variável, se necessário, para alterar o modo de arredondamento.
Mais informações aqui: http://php.net/manual/en/function.round.php
23
será 20
e não 30
porque sempre rodará para o próximo 10. O modo de arredondamento não ajudará, já que este arredondamento apenas metade, após o x.
.
Na verdade, eu estava procurando por uma função que pudesse arredondar para a variável mais próxima, e esta página continuou aparecendo em minhas pesquisas. Então, quando finalmente acabei escrevendo a função sozinho, pensei em postá-la aqui para que outras pessoas a encontrem.
A função arredondará para a variável mais próxima:
function roundToTheNearestAnything($value, $roundTo)
{
$mod = $value%$roundTo;
return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}
Este código:
echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';
Irá produzir:
1230
1235
1230
1169
Existem muitas respostas nesta questão, provavelmente todas lhe darão a resposta que você está procurando. Mas, como @TallGreenTree menciona, há uma função para isso.
Mas o problema da resposta de @TallGreenTree é que ela não arredonda para cima, ela arredonda para o próximo 10. Para resolver isso, some +5
ao seu número para arredondar para cima. Se você quiser arredondar para baixo, faça -5
.
Então, no código:
round($num + 5, -1);
Você não pode usar o round mode
para arredondar para cima, porque isso arredonda apenas frações e não números inteiros.
Se você quiser arredondar para cima 100
, deve usar +50
.
div por 10, em seguida, use ceil e mult por 10
Experimentar
round(23, -1);
Podemos "trapacear" via rodada com
$rounded = round($roundee / 10) * 10;
Também podemos evitar passar pela divisão de ponto flutuante com
function roundToTen($roundee)
{
$r = $roundee % 10;
return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}
Edit: Eu não sabia (e não está bem documentado no site) que round
agora suporta precisão "negativa", para que você possa usar mais facilmente
$round = round($roundee, -1);
Edite novamente: se você sempre quiser arredondar, pode tentar
function roundUpToTen($roundee)
{
$r = $roundee % 10;
if ($r == 0)
return $roundee;
return $roundee + 10 - $r;
}
Eu queria arredondar para o próximo número na casa de dígitos maiores (existe um nome para isso?), Então fiz a seguinte função (em 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
Isso pode ser feito facilmente usando a função ' fmod ' do PHP . O código abaixo é específico para 10, mas você pode alterá-lo para qualquer número.
$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;
SAÍDA: 100
Tente isto ...... passe o número a ser arredondado e ele será arredondado para o décimo mais próximo.Espero que ajude ....
rodada ($ num, 1);