ok, entonces redondea a 1 cifra significativa! jaja
tarnfeld
3
Para ser justos, en el título, que dice "redondo hasta un número cercano a 10", a pesar de que el texto dice "salida redonda" ... Estoy bastante seguro de que está pidiendo que siempre ronda hasta el próximo 10.
La respuesta de TallGreenTree no siempre lo completa. Esta respuesta es la más correcta con el uso de ceil ()
Brandon
1
La respuesta de TallGreenTree admite el redondeo hacia arriba / hacia abajo usando el tercer parámetro (modo) de round (). round ($ input, -1, PHP_ROUND_HALF_UP)
Daren Schwenke
4
@DarenSchwenke, ese tercer parámetro no funciona como usted asume, que solo controla el caso de exactamente la mitad entre los intervalos. (15,-1, PHP_ROUND_HALF_UP); // 20,(14,-1, PHP_ROUND_HALF_UP); // 10
Arth
168
round($number,-1);
Esto redondeará el número $ al 10 más cercano. También puede pasar una tercera variable si es necesario para cambiar el modo de redondeo.
¿Puede culparlos por asumir que el interrogador quiso decir "redondear a la decena más cercana" cuando la pregunta decía "redondear a la decena más cercana" dos veces?
ceejayoz
Esta respuesta se publicó antes de que el interrogador se aclarara. Solo pensé que no estaba redondeando correctamente la pregunta.
TallGreenTree
12
TallGreenTree es correcto. Puede establecer el modo de redondeo con el tercer argumento: "modo Uno de PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN o PHP_ROUND_HALF_ODD".
d -_- b
13
Esto no da el resultado correcto. 23será 20y no 30porque siempre se redondeará a la decena más cercana. El modo de redondeo no ayudará, ya que esta sólo la mitad redonda, después de la x..
Timo002
1
Es triste que ceil () y floor () aún no tengan el parámetro de precisión.
squarecandy
15
De hecho, 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é en publicarla aquí para que otros la encontraran.
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);}
Kenny, eres el mejor. Solo desearí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. Supongo que tendré que hacer algunas pruebas.
Alph.Dev
¿Hay alguna forma de modificar este código para agregar un tercer parámetro con el modo redondo HALF_UP / HALF_DOWN?
Alph.Dev
12
Hay muchas respuestas en esta pregunta, probablemente todas te darán 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, sume +5a su número para redondear. Si desea redondear hacia abajo, hágalo -5.
Entonces en código:
round($num +5,-1);
No se puede usar round modepara redondear, porque eso solo redondea fracciones y no números enteros.
Si desea redondear al más cercano 100, debe usar +50.
Mi primer impulso fue buscar en Google "php math" y descubrí que hay una función básica de biblioteca matemática llamada "round ()" que probablemente sea lo que quieres.
Para las personas que quieran hacerlo con SQL sin procesar, 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';
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 graphfunction 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 functionfunction 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
Respuestas:
floor()
bajará.ceil()
subirá.round()
irá al más cercano por defecto.Dividir por 10, hacer el techo y luego multiplicar por 10 para reducir los dígitos significativos.
Editar: Lo he estado haciendo de esta manera durante tanto tiempo ... pero la respuesta de TallGreenTree es más limpia.
fuente
(15,-1, PHP_ROUND_HALF_UP); // 20
,(14,-1, PHP_ROUND_HALF_UP); // 10
Esto redondeará el 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
fuente
23
será20
y no30
porque siempre se redondeará a la decena más cercana. El modo de redondeo no ayudará, ya que esta sólo la mitad redonda, después de lax.
.De hecho, 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é en publicarla aquí para que otros la encontraran.
La función se redondeará a la variable más cercana:
Este código:
Saldrá:
fuente
Hay muchas respuestas en esta pregunta, probablemente todas te darán 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, sume
+5
a su número para redondear. Si desea redondear hacia abajo, hágalo-5
.Entonces en código:
No se puede usar
round mode
para redondear, porque eso solo redondea fracciones y no números enteros.Si desea redondear al más cercano
100
, debe usar+50
.fuente
div por 10 luego use ceil luego multiplique por 10
http://php.net/manual/en/function.ceil.php
fuente
Tratar
round(23, -1);
fuente
Podemos "hacer trampa" mediante una ronda con
También podemos evitar pasar por la división de punto flotante con
Editar: no sabía (y no está bien documentado en el sitio) que
round
ahora admite precisión "negativa", por lo que puede usar más fácilmenteEditar de nuevo: si siempre desea redondear, puede intentar
fuente
fuente
Prueba esto:
fuente
Mi primer impulso fue buscar en Google "php math" y descubrí que hay una función básica de biblioteca matemática llamada "round ()" que probablemente sea lo que quieres.
fuente
Para las personas que quieran hacerlo con SQL sin procesar, 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';
fuente
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):
fuente
fuente
Esto se puede lograr fácilmente usando la función ' fmod ' de PHP . El código siguiente es específico de 10, pero puede cambiarlo a cualquier número.
SALIDA: 100
fuente
a la 10 más cercana, debe ser la siguiente
fuente
Intente esto ... pase el número a redondear y se redondeará a la décima más cercana. Espero que ayude ...
round ($ num, 1);
fuente