blog logo
iaman

Number 와 parseInt 차이점 살펴보기


숫자형식의 string 타입을 number 타입으로 변경할 때

무조건적으로 둘중 아무거나 선택해서 사용하던중에 정리가 필요할거 같아 정리 해본다.

#공통점

NumberparseInt 둘 다 숫자로 변환하는 함수

#동작 방식

Number : 전달 받은 매개변수의 전체 값을 평가하여 숫자 형식으로 변환

                     parseInt : 전달 받은 매개변수를 하나씩 체크 하여 유효한 정수 까지만 변환하고 이후 매개변수는 무시 하고 숫자 형식으로 변환

( 문자가 아닌 공백에 관대)

#예시

console.log(Number("123"));        // 123
console.log(Number("12.34"));      // 12.34
console.log(Number("123abc"));     // NaN
console.log(Number("   0012 300  "));   // NaN
console.log(Number(true));         // 1
console.log(Number(false));        // 0
console.log(Number(null));         // 0
console.log(Number(undefined));    // NaN
console.log(Number("Infinity"));   // Infinity



console.log(parseInt("123"));      // 123
console.log(parseInt("12.34"));    // 12
console.log(parseInt("123abc"));   // 123
console.log(parseInt("   0012 300  "));   // 12
console.log(parseInt("abc123"));   // NaN
console.log(parseInt("  42"));     // 42 (공백 허용)
console.log(parseInt("101", 2));   // 5 (이진수로 해석)

🤔 궁금한 점

지난 글에 javaScript는 문자열에 e가 포함되면 지수 표기법으로 처리 한다고 했다.

디버깅 해보면

Number('1e5') // 100,000
parseInt('1e5') // 1

Number는 전체 매개변수를 체크 하므로 문자열에 e가 포함 되어 있어 지수 표기법으로 처리 한다.

parseInt는 하나씩 체크 하므로 e는 문자로 취급해 1까지만 출력 하는 걸 볼 수 있다.

그래서

'12345' 이러한 문자타입을 숫자타입으로 변경하려면 무엇을 사용해야 할까?

#결론

정확하게 숫자만 포함된 문자열을 숫자로 변환할 때는 Number을 사용하는 것이 좋다.

parseInt는 문자열 안에 문자가 들어가있어도 숫자를 필요로 할 때 그리고 소수점 이하를 버릴 때 사용하는 것이 좋다.