혹시나 잘못된 개념 전달이 있다면 댓글 부탁드립니다. 저의 성장의 도움이 됩니다
알고리즘 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()
사용을 권장한다.