2009-08-04 4 views
8

J'ai le code javascript suivant.arrondi entier avec parseInt dans javascript

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

Actuellement si on leur donne la valeur 55 (par exemple), il retournera 1 depuis le 1 < 55/30 < 2. Je me demandais s'il y avait un moyen d'arrondir à 2 si la virgule étant abandonné était supérieur à .5.

merci à l'avance

Répondre

26

Utilisez une combinaison de parseFloat et Math.round

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

[EDIT] En fonction de votre exemple de code, vous n'avez pas besoin parseInt du tout depuis votre argumentation est déjà un nombre. Tout ce que vous avez besoin est Math.round

+3

de l'expérience douloureuse que je recommande toujours passer dans la deuxième option pour forcer param à dix base: parseInt (myNum, 10) sinon vous pouvez obtenir dans un monde de douleur de débogage quand il essaye de convertir des chaînes qui commencent par des 0 etc qui jettent tout en mode hexadécimal et ainsi de suite, un vrai coup de tête ...! –

+0

Je suis d'accord, sauf que parseFloat n'a pas le paramètre radix. C'est juste parseFloat (string). –

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

Cela semble faux. Le plancher renvoie toujours la valeur la plus basse, ce qui est précisément ce que le questionneur ne voulait pas. –

+0

C'est pourquoi vous ajoutez 0,5 – cdm9002

+0

Et le +0,5 arrondit. – Nosredna