¿Cómo puedo redondear a números enteros en JavaScript?

92

Tengo el siguiente código para calcular un cierto porcentaje:

var x = 6.5;
var total;

total = x/15*100;

// Result  43.3333333333

Lo que quiero tener como resultado es el número exacto 43y si el total es 43.5, debería redondearse a44

¿Hay alguna forma de hacer esto en JavaScript?

no sé cómo
fuente

Respuestas:

167

Utilice la Math.round()función para redondear el resultado al número entero más cercano.

hmakholm dejó a Monica
fuente
también me ayudó! :) Gracias por el amigo del enlace MDN :)
Afzaal Ahmad Zeeshan
1
El crédito por el enlace es para @Jeremy. Gracias por insertarlo, hizo que comenzar en SO fuera mucho más divertido que la quinta respuesta que escribí obtuviera tantos votos como esta, lo que seguramente se debió al enlace. :-)
hmakholm dejó a Monica el
2
¿OP no quería redondear UP? Si es así, tal vez Math.ceil () sería más apropiado
martellalex
1
@martellalex: A partir de la pregunta, el OP quería 43.333 para redondear a 43 pero 43.5 para redondear a 44, lo que coincide exactamente con el comportamiento de ECMAScript Math.round () de redondeo al más cercano y ejecutar sem enteros exactos hacia infinito positivo.
hmakholm dejó a Monica el
65
//method 1
Math.ceil(); // rounds up
Math.floor(); // rounds down
Math.round(); // does method 2 in 1 call

//method 2
var number = 1.5; //float
var a = parseInt(number); // to int
number -= a; // get numbers on right of decimal

if(number < 0.5) // if less than round down
    round_down();
else // round up if more than
    round_up();

uno o una combinación resolverán tu pregunta

Pato
fuente
10
total = Math.round(total);

Deberías hacerlo.

Phil
fuente
8

Use Math.roundpara redondear el número al entero más cercano:

total = Math.round(x/15*100);
Gumbo
fuente
4

una solución muy sucinta para redondear un flotador x:

x = 0|x+0.5

o si solo quieres poner en el suelo tu flotador

x = 0|x

esto es bit a bit o con int 0, que elimina todos los valores después del decimal

Karo Castro-Wunsch
fuente