¿Cómo podemos redondear un número al 10 más cercano en php?¿Cómo redondear un número al 10 más cercano?
Digamos que tengo 23
, ¿qué código usaría para redondearlo a 30
?
¿Cómo podemos redondear un número al 10 más cercano en php?¿Cómo redondear un número al 10 más cercano?
Digamos que tengo 23
, ¿qué código usaría para redondearlo a 30
?
floor()
bajará.
ceil()
subirá.
round()
irá al más cercano por defecto.
Divida por 10, haga el tope, luego multiplique por 10 para reducir los dígitos significativos.
$number = ceil($input/10) * 10;
Edit: Lo he estado haciendo así durante tanto tiempo ... pero la respuesta de TallGreenTree es más clara.
ceil - eso funciona: D !!! – tarnfeld
La respuesta de TallGreenTree no siempre la resume. Esta respuesta es la más correcta con el uso de ceil() – Brandon
La respuesta de TallGreenTree admite el redondeo hacia arriba/abajo usando el tercer parámetro (modo) de round(). round ($ input, -1, PHP_ROUND_HALF_UP) –
div en un 10 a continuación, utilizar ceil continuación mult por 10
Podemos "engañar" a través redonda con
$rounded = round($roundee/10) * 10;
También podemos evitar pasar por división de coma flotante con
function roundToTen($roundee)
{
$r = $roundee % 10;
return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}
Editar: No lo sé (y no está bien documentado en el si te) que round
ahora es compatible con la precisión "negativa", lo que puede utilizar más fácilmente
$round = round($roundee, -1);
de nuevo Edit: Si siempre desea redondear hacia arriba, puede intentar
function roundUpToTen($roundee)
{
$r = $roundee % 10;
if ($r == 0)
return $roundee;
return $roundee + 10 - $r;
}
hola, esto funciona perfectamente - para esa pregunta, ¿cómo puedo redondear? entonces 23 a 30? – tarnfeld
round($number, -1);
Esta voluntad redondee $ 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
redondo no es lo que quiere –
¿Puedes culparlos por suponer que el interrogador quiso decir "redondea al 10 más cercano" cuando la pregunta dijo "redondea al 10 más cercano" dos veces? – ceejayoz
Esta respuesta fue publicada antes de que el interrogador se aclarara a sí mismo. Solo pensé que no estaba redondeando correctamente en la pregunta. – TallGreenTree
Trate
round(23, -1);
Mi primer impulso fue el de Google de "php matemáticas" y descubrí que hay una función de biblioteca matemática núcleo llamado "round()" eso es probablemente lo que quieres
Prueba esto:
ceil($roundee/10) * 10;
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
a la vuelta hasta el 10 próximo, y luego añadir 10.
round($num, -1) + 10
esto funcionará para el ejemplo publicado (23 a 30) pero dará como resultado que 27 se redondee a 40. – squarecandy
Hay muchas anwers en esta pregunta, probablemente todo voluntad darte 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 número 10. Para resolverlo, agregue +5
a su número para redondear. Si desea redondear, haga -5
.
Así que en código:
round($num + 5, -1);
no puede utilizar el round mode
para el redondeo, ya que sólo repasa fracciones y no números enteros.
Si desea redondear al 100
más cercano, debe usar +50
.
¡Esta es la respuesta más correcta! –
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é escribiendo la función yo mismo, pensé que la publicaría aquí para que otros la encuentren.
La función 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>';
seria:
1230
1235
1230
1169
Kenny, eres el mejor. Solo me gustaría tener una representación gráfica de cómo se redondea exactamente, así que estoy seguro de que da los resultados esperados en el 100% de los casos. Creo que tendré que hacer algunas pruebas. –
¿Hay alguna manera de modificar este código para agregar un tercer parámetro con el modo redondo HALF_UP/HALF_DOWN? –
probar este ...... pase el número que se redondeará y redondeará al décimo más cercano. Espero que sea h elps ....
round ($ num, 1);
Para las personas que quieren hacerlo con SQL prima, sin necesidad de utilizar PHP, Java, Python, etc. SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';
quería redondear al siguiente número en el lugar más grande dígitos (¿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;
}
Er, ¿ese no es el * más cercano * 10? –
bien, redondee hasta 1 cifra significativa entonces! jaja – tarnfeld
Para ser justos, en el título, dice "redondear * hacia arriba * un número al más cercano 10", aunque el texto dice "redondear" ... estoy bastante seguro de que él está pidiendo siempre redondear * arriba * a el * siguiente * 10. –