Pergunta

Como podemos arredondar um número para o mais próximo 10 em php?

Say I têm 23, o código que eu iria usar para terminar o dia a 30?

Foi útil?

Solução

floor() vai cair.

ceil() vai subir.

round() vai para o mais próximo por padrão.

Dividir por 10, faça o ceil, em seguida, multiplicar por 10 para reduzir os dígitos significativos.

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

Edit:. Eu venho fazendo isso dessa forma por tanto tempo .. mas a resposta de TallGreenTree é mais limpo

Outras dicas

round($number, -1);

Isto irá arredondar $ número para o 10. mais próximo Você também pode passar uma terceira variável, se necessário alterar o modo de arredondamento.

Mais informações aqui: http://php.net/manual/en/function. round.php

Eu estava realmente procurando por uma função que poderia arredondar para a variável mais próximo, e esta página começou a aparecer em minhas pesquisas. Então, quando eu finalmente acabou escrevendo a função de mim mesmo, eu pensei que eu iria postá-lo aqui para que outros possam encontrar.

A função será rodada para a variável mais próximo:

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>';

saída:

1230
1235
1230
1169

Existem muitas anwers nesta questão, provavelmente tudo vai lhe dar a resposta que você está procurando. Mas, como @TallGreenTree menciona, há uma função para isso.

Mas o problema da resposta de @TallGreenTree é que ele faz se não redondo, que arredonda para o 10. mais próximo Para resolver isso, adicione +5 para o seu número, a fim de se round. Se você quiser descer redondo, fazer -5.

Assim, em código:

round($num + 5, -1);

Você não pode usar o round mode para arredondar para cima, porque isso só rodadas até frações e não números inteiros.

Se você quiser arredondar para o 100 mais próxima, que deviam usar +50.

div por 10, em seguida, usar ceil então mult por 10

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

Tente

round(23, -1);

Nós podemos "enganar" via redonda com

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

Nós também pode evitar passar por 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 é bem documentado no site) que round agora suporta precisão "negativo", para que possa mais facilmente usar

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

Editar novamente: Se você sempre quer-se redondo, você pode tentar

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

Tente isto:

ceil($roundee / 10) * 10;

para baixo Apenas rodada para o mais próximo 10, e depois adicionar 10.

round($num, -1) + 10

Meu primeiro impulso foi no Google por "math php" e descobri que há uma função central biblioteca de matemática chamado de "round ()" que provavelmente é o que você quer.

Para as pessoas que querem fazê-lo com SQL cru, sem o uso de PHP, Java, Python etc. SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';

Eu queria arredondar para o próximo número no maior lugar dígitos (há um nome para isso?), Por isso 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

Isto pode ser facilmente realizado usando PHP função ' fmod '. 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 este ...... passar o número a ser arredondado e ele irá arredondar para o mais próximo tenth.hope ajuda ....

round ($ num, 1);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top