2009-08-04 22 views
8

Tengo el siguiente código de javascript.redondeo de entero con parseInt en javascript

if(frequencyValue <= 30) 
      leftVal = 1; 
     else if (frequencyValue > 270) 
      leftVal= 10; 
     else 
      leftVal = parseInt(frequencyValue/30); 

Actualmente si se le da el valor 55 (por ejemplo) devolverá 1 desde 1 < 55/30 < 2. Me preguntaba si había una manera de redondear a 2 si el decimal que es caída fue mayor que .5.

gracias de antemano

Respuesta

26

utilizar una combinación de parseFloat y Math.round

Math.round(parseFloat("3.567")) //returns 4 

[EDIT] Sobre la base de su código de ejemplo, no es necesario un parseInt en absoluto, ya que su argumento ya es un número. Todo lo que necesita es Math.round

+3

por dolorosa experiencia que recomendaría siempre que pasa en el segundo parámetro opcional para forzarlo a base diez: parseInt (myNum, 10) de lo contrario se puede obtener en todo un mundo de dolor de depuración cuando intenta convertir cadenas que comienzan con 0, etc., que lo arrojan todo al modo Hex, y así sucesivamente, ¡un verdadero heridor de cabeza ...! –

+0

Estoy de acuerdo, excepto que parseFloat no tiene el parámetro radix. Es solo parseFloat (cadena). –

5
leftVal = Math.floor(frequencyValue/30 + 0.5); 
+3

Esto parece incorrecto Floor devuelve siempre el valor más bajo, que es específicamente lo que el interlocutor no quería. –

+0

Es por eso que agrega 0.5 – cdm9002

+0

Y el +0.5 lo redondea. – Nosredna