
백준 알고리즘을 풀다보면 항상 input값을 string으로 받아오기 때문에 number로 다시 바꿔줘야할 때가 많이 있다. (다 풀고 두 값을 더해서 콘솔에 찍으면 1 + 2 = 3이 아닌 12가 찍힐 때도 있었다 ㅎㅎ)
그래서 이번에는 number로 자료형을 바꿔줄 수 있는 방법에 대해 알아본다.
문자열을 숫자(정수형)로 바꿔주는 함수.
parseInt(str, base)
base는 추가 옵션인데, 사용할 진법을 명시해주는 것이다. 기본값은 10진법.
let string = '123abc';
console.log(parseInt(string));
// Output : 123
특징은 문자열 안에 숫자가 아닌 것이 있어도 제대로 숫자만 뽑아와준다는 것.
하지만 parseInt인 만큼 소수가 있으면 .뒤의 값은 무시해버린다.
문자열을 숫자(소수)로 바꿔주는 함수.
let str = '123.4ab56';
console.log(parseFloat(str));
// Output : 123.4
.이후의 숫자까지 포함하여 소수로 만들어준다. 하지만 문자열 뒤는 무시된다.
그렇기 때문에 밑과 같은 경우는 결과가 예상대로 나오지 않는다.
let str = 'asdf123.53a243'
console.log(parseFloat(str));
// Output : NaN
숫자 (정수, 소수) 만을 숫자형으로 변환시켜주는 함수. 다른 것이 들어가있으면 무조건 NaN!
console.log(Number('123'));
// Output : 123
console.log(Number('123.456'));
// Output : 123.456
console.log(Number('123asdf'));
// Output : NaN
console.log(Number('123.12asd'));
// Output : NaN
사용하는 상황이 다르다, 만약에 24px 등의 값을 변환해야한다면 parseInt()를, 아니면 문자열이 들어가면 오류 처리를 하고 싶다면 Number()를 사용.
아직 이 방법이 어떻게 다르고 혹여나 단점이 있는지는 모른다. 하지만 내가 가장 많이 사용하는 방법은 그냥 문자열 앞에 +을 붙이는 것이다.
이 방법으론 문자와 함께 있는 숫자는 안되고, 정수나 소수만 된다.
왜 이걸 가장 많이 쓰냐면, 숫자 배열을 불러왔을 때 숫자들이 문자열로 되어있다면 map 메소드로 쉽게 숫자형으로 바꿀 수 있다.
let myStrArr = ['1', '2', '3'];
let myNumArr = myArr.map(e => +e);
console.log(myNumArr);
// Output : [1, 2, 3]
하지만 parseInt(), parseFloat(), Number()를 더 사용해야겠다.