Cómo redondear un número entero hacia arriba o hacia abajo a la decena más cercana usando Javascript


82

Usando Javascript, me gustaría redondear un número pasado por un usuario al 10 más cercano. Por ejemplo, si se pasa 7 debería devolver 10, si se pasa 33 debería devolver 30.

Respuestas:


161

Divida el número por 10, redondee el resultado y multiplíquelo por 10 nuevamente:

var number = 33;
console.log(Math.round(number / 10) * 10);


12
Esta técnica también funciona usando Math.floor, si desea evitar el redondeo hacia arriba
Alex W

11
Puede utilizar el método Math.ceil para redondear.
Kerem Demirer


19

¿Dónde iestá un int.

Para redondear al múltiplo de 10 más cercano, es decir

11 se convierte en 10
19 se convierte en 10
21 se convierte en 20

parseInt(i / 10, 10) * 10;

Para redondear al múltiplo de 10 más cercano, es decir

11 se convierte en 20
19 se convierte en 20
21 se convierte en 30

parseInt(i / 10, 10) + 1 * 10;  

4
¿No debería ser: (parseInt (i / 10, 10) + 1) * 10; ?
user3924331

@ user3924331, tienes razón. La respuesta correcta es (parseInt (i / 10, 10) + 1) * 10; Las ediciones deben tener al menos 6 caracteres, por lo que no es posible agregar solo esos dos paréntesis ... ¯_ (ツ) _ / ¯
Fernando

Hasta el próximo 10 añade 10 para el valor 100, por lo que se convierte en 110. Abajo para más cercana 10 no resta -10 a 100, por lo que 100 estancias 100.
TitanFighter

6

Necesitaba algo similar, así que escribí una función. Usé la función para el redondeo decimal aquí , y como también la uso para el redondeo de enteros, la estableceré como la respuesta aquí también. En este caso, simplemente pase el número que desea redondear y luego 10, el número al que desea redondear.

function roundToNearest(numToRound, numToRoundTo) {
    return Math.round(numToRound / numToRoundTo) * numToRoundTo;
}

Me gusta que lo haya convertido en una función, pero ¿esto da una salida diferente a la respuesta aceptada? Y si no, ¿por qué ha usado una fórmula diferente?
RozzA

Devuelve el mismo valor, pero la fórmula es diferente porque facilita su uso. Por ejemplo, si desea redondear al más cercano .25, simplemente puede usarlo .25como segundo argumento. Si tuviera que usar las fórmulas en las otras respuestas, tendría que usarlas 4como segundo argumento cuando quiera redondear .25, lo cual es contrario a la intuición.
Cjbarth

puedes probar eso Acabo de hacer algunas pruebas en la consola y la respuesta aceptada devuelve la respuesta correcta usando .25como segundo argumento - Lo convertí en una función de una líneafunction roundTo(x,y){return Math.round(x / y) * y}
RozzA

@RozzA, tienes razón. Estaba pensando en las respuestas en otra pregunta similar. Simplificaré mi función.
cjbarth
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.