2009-08-04 14 views
8

Ich habe den folgenden JavaScript-Code.Integer-Rundung mit ParseInt in Javascript

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

Zur Zeit gegeben, wenn der Wert 55 (zum Beispiel) es gibt 1 zurück, da 1 < 55/30 < 2. Ich frage mich, ob es einen Weg zu 2 aufrunden, wenn die Dezimalstelle fallen gelassen zu werden, war größer als .5.

Dank im Voraus

Antwort

26

eine Kombination aus parseFloat und Math.round Verwenden

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

[EDIT] Basierend auf Ihrem Code-Beispiel, brauchen Sie nicht eine ParseInt da Ihr Argument ist schon eine Nummer. Alles, was Sie brauchen, ist Math.round

+3

aus schmerzhafter Erfahrung, die ich immer in dem optionalen zweiten param Gabe an zehn Basis zu erzwingen würde empfehlen: parseInt (myNum, 10) sonst kann man in einer ganzen Welt von Debug-Schmerzen bekommen wenn es versucht, Zeichenfolgen zu konvertieren, die mit 0 beginnen usw., die alles in den Hex-Modus und so weiter werfen, ein echter Kopfschauer ...! –

+0

Ich stimme zu, außer dass parseFloat nicht den Parameter radix hat. Es ist nur parseFloat (string). –

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

Das sieht falsch aus. Floor gibt immer den niedrigeren Wert zurück, was speziell der Fragesteller nicht wollte. –

+0

Deshalb fügen Sie 0,5 – cdm9002

+0

Und die +0,5 Runden es. – Nosredna

Verwandte Themen