\(@^0^@)/

[JS] Number 와 parseInt의 차이점 본문

TIL

[JS] Number 와 parseInt의 차이점

minjuuu 2021. 9. 11. 22:34
728x90

Number와 parseInt를 구별하지 않고 사용했었다. 하지만 알고리즘 문제를 풀다 보니까
parseInt는 사용이 가능하지만, Number를 사용하면 계속 틀린 결과를 받아오더라..
그래서, 이 둘의 차이점이 궁금해져서 한번 정리하고 넘어가면 좋을 것 같다는 생각을 하였다.

아래의 코드는 내가 그 둘의 차이에 의문을 들게 한 백준 10869번 임.

// 두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)
// 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
// 예제 입력 : 7 3
// 예제 출력 : 10, 4, 21, 2, 1

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split(' ');


// Number, parseInt 모두 사용가능!
let a = Number(input[0]);
let b = Number(input[1]);
//let a = parseInt(input[0]);
//let b = parseInt(input[1]);


// 이 부분에선 Number를 사용할 수 없음.
console.log(parseInt(a/b));

🧐 Number? parseInt?

parseInt와 Number로 아래의 해당 값들을 변환해보았을 때 차이가 분명하게 나타남!

Number와 parseInt의 공통점은 문자열을 인자로 받으면 해당 문자열을 숫자로 바뀌고, 
문자열을 숫자로 형변환하여 변수 test에 결과값을 저장한다.

하지만 Number의 경우 '2021년 01월 01일' 같이 문자열이 모두 숫자가 아닐 때 NaN을 나타내지만,
parseInt는 문자열이 숫자로 시작하는 경우 (2021년 01월 01일)에는 숫자가 끝날 때까지 (다른 문자가 나오기 전까지)
형변환이 되는 것을 볼 수 있음. (하지만 처음부터 문자로 시작하는 경우에는 NaN을 나타냄)


 

 


※ 참고 : https://www.acmicpc.net/problem/10869

※ 참고 : https://dororongju.tistory.com/71

 

728x90

'TIL' 카테고리의 다른 글

[JS] 좌표 CSS, JS / client, page  (0) 2021.09.22
[JS] 스크립트 defer, async  (0) 2021.09.22
[JS] JS 동작원리 (stack, Queue, event loop)  (0) 2021.09.08
jQuery 쌩기초  (0) 2021.09.08
[JS] DocumentFragment  (0) 2021.09.04