
Math.floor()와 parseInt()두 함수에 대한 궁금증이 생긴 것은 코테 문제를 풀다가 생겼다. 내가 작성한 코드와 다른 사람들의 코드를 비교하다 눈에 들어온 것이 Math.floor()와 parseInt() 함수의 사용이다.
parseInt()
function solution(array) {
array.sort((a, b) => a - b);
var answer = parseInt((array.length)/2)
return array[answer];
}
Math.floor()
function solution(array) {
array.sort((a, b) => a - b);
var answer = Math.floor((array.length)/2)
return array[answer];
}
Math.floor()와 parseInt() 모두 정답으로 처리되었다. 같은 결과 값이 나오면 둘 중 하나만 사용해도 되는데 왜 2가지의 함수가 필요한가에 대한 의문이 생겼다.
Math.floor()와 parseInt()에 대한 내용
Math.floor()와 parseInt()의 차이case 1) 양수인 경우
console.log(Math.floor(1.2), parseInt(1.2)); // 1 1
console.log(Math.floor(1.8), parseInt(1.8)); // 1 1
case 2) 음수인 경우
console.log(Math.floor(-1.2), parseInt(-1.2)); // -2 -1
console.log(Math.floor(-1.8), parseInt(-1.8)); // -2 -1
case 3) 문자가 포함된 경우
console.log(Math.floor('1.3px'), parseInt('1.3px')); // NaN 1
console.log(Math.floor('2n9a'), parseInt('2n9a')); // NaN 2
총 3가지 경우를 보았다.
양수인 경우에는 같은 결과를 도출했다. 하지만 음수와 문자가 포함된 경우에는 다른 결과가 나온다.
Math.floor()는 소수점 아래의 수를 내리는 특성이고 parseInt()는 소수점 아래의 수를 버린다.
이런 특성이 음수에서 적용될 경우 Math.floor()는 소수점 아래의 수를 내려서 -1.2인 경우 -2로 앞의 수가 달라지고 parseInt()는 소수점 아래의 수를 버리기 때문에 -1.2에서 -1이 된다.
문자가 포함된 경우에는 Math.floor()는 NaN이 출력되고 parseInt()는 문자를 만나기 전까지의 수를 출력한다.