parseInt() 와 Number() 의 차이

장택진·2023년 4월 17일
0

이분 탐색에 대한 알고리즘 문제를 풀다가 Number()를 사용하니 출력값이 undefined가 나오고 parseInt()를 사용하니 제대로 된 출력값이 나왔다
문제의 코드다!

function solution(target, arr){
                let answer;
                arr.sort((a, b)=>a-b);
                let lt=0, rt=arr.length-1;
                while(lt<=rt){
                    let mid=parseInt((lt+rt)/2);
                    if(arr[mid]===target){
                        answer=mid+1;
                        break;
                    }
                    else if(arr[mid]>target) rt=mid-1;
                    else lt=mid+1;
                }
               
                return answer;

배열에서 target 값을 찾는 문제였는데 변수 mid의 값이 Number()를 쓰면 3.5 , 13.5 이렇게 나올 수도 있던거다. 그렇다면 arr[3.5]를 찾고있으니 undefined이 나올 수 밖에 없었다.

let test = '100.12345';
parseInt(test); // 100
Number(test); // 100.12345
parseFloat(test); // 100.12345
  • parseInt()는 정수만 뽑아서 출력해주고 Number()는 전체값을 출력해준다.
let test = '25살';
parseInt(test); // 25
Number(test); // NaN

'25'라는 숫자와 나이를 칭하는 "살"을 더한 문자열을 변환봤을 때 차이이다.

  • parseInt()는 25라는 숫자를 파싱해서 뽑아내온다.
  • Number()는 문자열이 포함되어 있기 때문에 NaN(Not a Number)를 출력해준다.
let test = '제1회';
parseInt(test); // NaN
Number(test); // NaN

'제'라는 문자열로 시작했을 때의 예제이다.

  • 문자열로 시작했다면 parseInt()도 NaN을 출력해준다.

결론

parseInt()는 문자열로 된 부분에서 숫자(정수)만 뽑아서 변환해주는것이 특징이다.
Number()은 문자열 전체가 숫자일때 소수점까지 숫자타입으로 가져올 수 있다.

이 둘의 차이점을 명확히 구분하여 필요할 때마다 적절히 활용하면 될 것 같다.

profile
필요한 것은 노력과 선택과 치킨

1개의 댓글

comment-user-thumbnail
2023년 4월 17일

100점

답글 달기