몫 구하기 비교 : parseInt vs Math.floor

0

알고리즘

목록 보기
1/8
post-thumbnail

혹시나 잘못된 개념 전달이 있다면 댓글 부탁드립니다. 저의 성장의 도움이 됩니다

알고리즘 0단계 문제 풀다가 다른 사람 풀이를 보니까 정수를 만들 때 Math.floor() 대신 parseInt()를 더 많이 사용하는 경향이 보였다.

MDN에서 봤을 때, parseInt() 문자열을 특정 진법의 정수로 변환한다고 해서 굳이 숫자 입력값일 때도 더 많이 쓰는 이유가 궁금했다.


매개변수 비교

parseInt(string)
parseInt(string, radix)

Math.floor(x)

MDN에 의하면 parseInt()첫번째 전달의 타입이 문자열이 아닌경우 문자열로 변환하여 정수를 반환한다고 한다. Math.floor() 의 전달값은 숫자로 한정된다.


음수일 때, 다른 결과값 발생

Math.floor(-5.05) // -6
Math.floor(-45.05); // -46
Math.floor(-45.95); // -46

parseInt(-5.05) // -5
parseInt(-45.05) // -45
parseInt(-45.95) // -45

Math.trunc(-5.05) // -5
Math.trunc(-45.05); // -45
Math.trunc(-45.95); // -45

Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.

위의 결과처럼 음수일 경우 더 작은 정수인 값으로 소수점 뒷자리가 사라지는 것이 아닌 -1이 더해진 값으로 반환된다.

  • Math.floor()는 내림, Math.trunc() 는 소수점 제거된 값을 반환

Math.trunc() 는 주어진 값이 양수이건 음수이건 상관없이 소수점 이하 우측부분을 제거하는 매우 단순한 동작을 합니다.


결론

양의 정수일 경우 차이가 없지만, 음수의 경우 Math.floor() 는 내림으로 인식되므로 몫을 구하기(소수점을 버림)에서는 Math.trunc()parseInt() 사용을 권장한다.

0개의 댓글