문제
이번 글에서는 JavaScript의 Math 클래스에 속하는 함수를 직접 작성해 보겠습니다.
이 함수는 호출될 때 전달받은 소수(십진수)보다 큰 가장 가까운 정수, 즉 올림 값을 반환해야 합니다.
만약 전달된 숫자가 이미 정수라면, 그 숫자를 그대로 반환하면 됩니다.
예제 코드
다음은 해당 기능을 구현한 코드입니다 -
const num = 234.56;
Math.ceil = function(num){
if(typeof num !== 'number'){
return NaN;
};
if(num % 1 === 0){
return num;
};
const [main] = String(num).split('.');
return +main + 1;
};
console.log(Math.ceil(num));
출력 결과
다음은 콘솔 출력 결과입니다 -
235
코드 동작 원리
위 코드의 작동 방식을 단계별로 살펴보겠습니다.
- 타입 검사: 전달된 값이 숫자 타입이 아니면
NaN을 반환합니다. - 정수 판별:
num % 1 === 0조건으로 나머지가 없으면 이미 정수이므로 그대로 반환합니다. - 올림 처리: 숫자를 문자열로 변환한 뒤 소수점(
.)을 기준으로 분리하여 정수 부분만 추출하고, 여기에 1을 더해 올림 값을 계산합니다.
결과적으로 234.56은 정수 부분 234에 1을 더한 235가 출력됩니다.
참고 사항
위 구현은 양수를 기준으로 작성되었습니다. 음수까지 완벽하게 지원하려면 부호를 고려한 별도의 처리가 필요합니다. 예를 들어 -234.56의 올림 값은 -234이며, 표준 내장 메서드인 Math.ceil()은 이러한 경우까지 정확하게 처리해 줍니다.