php - redondeo - ¿Cómo redondear un número al 10 más cercano?
redondeo de numeros ejemplos (14)
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>'';
Se producirá:
1230
1235
1230
1169
¿Cómo podemos redondear un número al 10 más cercano en php?
Digamos que tengo 23
, ¿qué código usaría para redondearlo a 30
?
Hay muchos puntos en esta pregunta, probablemente todos le darán la respuesta que está buscando. Pero como menciona @TallGreenTree, hay una función para esto.
Pero el problema de la respuesta de @TallGreenTree es que no redondea, redondea al 10 más cercano. Para resolver esto, agrega +5
a tu número para redondear. Si quieres redondear, haz -5
.
Entonces en el código:
round($num + 5, -1);
No puede usar el round mode
para redondear, porque eso solo redondea fracciones y no números enteros.
Si quiere redondear al 100
más cercano, debe usar +50
.
Intenta esto ... pasa el número que se redondeará y redondeará al décimo más cercano. Espero que ayude ...
redondo ($ num, 1);
Mi primer impulso fue buscar "php math" en google y descubrí que hay una función central de biblioteca matemática llamada "round ()" que probablemente es lo que quieres.
Para las personas que quieren hacerlo con SQL sin SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like ''%0'';
, sin usar php, java, python, etc. SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like ''%0'';
SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like ''%0'';
Podemos "hacer trampa" a través de una ronda 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 la round
ahora admite la precisión "negativa", por lo que puede usar más fácilmente
$round = round($roundee, -1);
Editar de nuevo: si siempre deseas redondear, puedes intentar
function roundUpToTen($roundee)
{
$r = $roundee % 10;
if ($r == 0)
return $roundee;
return $roundee + 10 - $r;
}
Prueba esto:
ceil($roundee / 10) * 10;
Quería redondear al siguiente número en el lugar de dígitos más grande (¿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;
}
Tratar
round(23, -1);
div por 10 luego usa ceil luego mult por 10
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;
Editar: Lo he estado haciendo así durante tanto tiempo ... pero la respuesta de TallGreenTree es más clara.
Simplemente redondee al 10 más cercano y luego agregue 10.
round($num, -1) + 10
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
round($number, -1);
Esto redondeará $ number 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