2009-08-04 22 views
8

Mam następujący kod javascript.Zaokrąglanie liczb całkowitych z parseInt w javascript

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

Obecnie, jeżeli z uwagi na wartość 55 (na przykład) że zwróci jeden od 1 < 55/30 < 2. ja zastanawiać, czy istnieje sposób zaokrąglić do 2, jeżeli miejsca dziesiętnego upuszczenia było większy niż .5.

góry dzięki

Odpowiedz

26

Użyj kombinacji parseFloat i Math.round

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

[EDIT] oparciu o próbkę kodu, nie trzeba się w ogóle parseInt od swojej argumentacji jest już liczbą. Wszystko czego potrzebujesz to Math.round

+3

z bolesnego doświadczenia chciałbym zawsze polecam przechodzenia w opcjonalnym drugim param, aby zmusić go do dziesięciu zasady: parseInt (myNum, 10), w przeciwnym razie można dostać w całym świecie bólu debugowania kiedy próbuje konwertować łańcuchy zaczynające się od 0 itd., które rzucają to wszystko w tryb szesnastkowy i tak dalej, prawdziwa głowa leci ...! –

+0

Zgadzam się z tym wyjątkiem, że parseFloat nie ma parametru radix. Jest to po prostu parseFloat (string). –

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

To wygląda źle. Piętro zwraca zawsze niższą wartość, co jest dokładnie tym, czego pytający nie chciał. –

+0

Dlatego dodajemy 0.5 – cdm9002

+0

A +0,5 zaokrągla to. – Nosredna

Powiązane problemy