2009-08-04 19 views
8

Ho il seguente codice javascript.arrotondamento intero con parseInt in javascript

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

Attualmente se dato il valore di 55 (per esempio) restituirà 1 dal 1 < 55/30 < 2. Mi chiedevo se ci fosse un modo per arrotondare fino a 2 se il decimale che è caduto è stato maggiore di 0,5.

grazie in anticipo

risposta

26

utilizzano una combinazione di parseFloat e Math.round

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

[EDIT] Sulla base della sua codice di esempio, non è necessario un parseInt a tutti dato che il vostro argomento è già un numero. Tutto ciò che serve è Math.round

+3

per dolorosa esperienza mi raccomando sempre di passaggio nella seconda param opzionale per costringerlo a dieci di base: parseInt (myNum, 10) altrimenti si può ottenere in un intero mondo di dolore di debug quando prova a convertire stringhe che iniziano con 0 ecc., che gettano tutto in modalità Hex e così via, un vero colpo di testa ...! –

+0

Sono d'accordo, tranne per il fatto che parseFloat non ha il parametro radix. È solo parseFloat (stringa). –

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

Questo sembra sbagliato. Floor restituisce sempre il valore più basso, che è specificamente ciò che l'interrogante non voleva. –

+0

Ecco perché aggiungi 0,5 – cdm9002

+0

E il +0,5 lo arrotonda. – Nosredna