본문 바로가기

web/JSP

javascript parseInt("08") == 0 ??

정상적으로 돌아야할 (정확히는 어떤 변수일때는 잘 돌고 있는) 소스에서 버그를 발견했다.
parseInt("08") 의 값이 0으로 뜨는것. (parseInt("09") 도 마찬가지이다.)
아마 나의 같은 경우의 겪은 사람들은 String 형으로 된 십자리의 문자를 0을 제외한 int 형으로 바꿀려고 하시는 분들일 것이다.
이상하게 "07" 까지의 값은 제대로 나오지만 "08" 값 부터 0을 뱉어낸다.
이상하다고 생각하여 실험을 해봤다. 


결과값 7 , 0 ?!!


구글님께서 친절히 설명을 해주셧다.
http://stackoverflow.com/questions/6410009/what-do-you-think-parseint08-will-return


간략히 해석해보면 parseInt() 함수는 default 값이 8진수를 받고 변환하는 함수이다. 
"07"의 경우엔 8진수에서 7을 리턴하지만
"08"  의 경우는 변환할경우 8진수에 따라 0이 반환되는것이다.  
(당연히 "09"는 0을 리턴한다.)

이런한 문제를 해결하기 위해서 parseInt 함수의 두번째 파라미터를 입력할수 있는데 두번째에 10을 넣어주면 10진수로 반환하라는 뜻이 된다.

반환값이 10진수라면 parseInt("08", 10) 형식을 8진수라면 parseInt("08") 게 써주게 되어 있다.


 10진수로 반환하게끔 설정. 

결과값~!