Pregunta

¿Cómo podemos redondear un número al 10 más cercano en php?

Diga que tengo 23 , ¿qué código usaría para redondearlo a 30 ?

¿Fue útil?

Solución

floor () bajará.

ceil () subirá.

round () irá a la más cercana por defecto.

Divide entre 10, haz el ceil, luego multiplica por 10 para reducir los dígitos significativos.

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

Edit: Lo he estado haciendo de esta manera durante mucho tiempo ... pero la respuesta de TallGreenTree es más limpia.

Otros consejos

round($number, -1);

Esto redondeará $ número al 10. más cercano. También puede pasar una tercera variable si es necesario para cambiar el modo de redondeo.

Más información aquí: http://php.net/manual/en/function. round.php

En realidad estaba buscando una función que pudiera redondear a la variable más cercana, y esta página seguía apareciendo en mis búsquedas. Entonces, cuando finalmente terminé de escribir la función, pensé que la publicaría aquí para que otros la encuentren.

La función se redondeará a la variable más cercana:

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

Saldrá:

1230
1235
1230
1169

Hay muchas respuestas en esta pregunta, probablemente todas te den la respuesta que estás buscando. Pero como menciona @TallGreenTree, hay una función para esto.

Pero el problema de la respuesta de @TallGreenTree es que no se redondea, se redondea al 10 más cercano. Para resolver esto, agregue +5 a su número para redondear . Si desea redondear hacia abajo, haga -5 .

Así en el código:

round($num + 5, -1);

No puedes usar el round mode para redondear, porque eso solo redondea las fracciones y no los números enteros.

Si desea redondear al 100 más cercano, debe usar +50 .

div por 10 luego usa ceil luego mult por 10

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

Probar

round (23, -1);

Podemos " engañar " via redonda con

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

También podemos evitar pasar por la división de punto flotante con

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

Editar: no sabía (y no está bien documentado en el sitio) que round ahora es compatible con " negativo " Precisión, para que puedas usarlo más fácilmente

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

Edita de nuevo: si siempre quieres redondear, puedes intentarlo

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

Prueba esto:

ceil($roundee / 10) * 10;

Simplemente redondea a los 10 más cercanos y luego agrega 10.

round($num, -1) + 10

Mi primer impulso fue buscar en Google para " php math " y descubrí que hay una función de biblioteca matemática central llamada " round () " eso es probablemente lo que quieres.

Para las personas que desean hacerlo con SQL sin formato, sin usar php, java, python, etc. SET SQL_SAFE_UPDATES = 0; ACTUALIZAR db.table SET valor = ceil (valor / 10) * 10 donde el valor no es como '% 0';

Quería redondear al siguiente número en el lugar de los dígitos más grandes (¿hay un nombre para eso?), así que hice la siguiente función (en 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

Esto se puede lograr fácilmente usando la función PHP fmod . El código a continuación es específico de 10, pero puede cambiarlo a cualquier número.

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

SALIDA: 100

Intente esto ...... pase el número que se redondeará y se redondeará a la décima más cercana. Espero que ayude ...

ronda ($ num, 1);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top