다음과 같은 숫자가 있다고 가정해 보겠습니다.
const num = 76;
이 숫자를 원하는 자릿수 단위로 반올림하면 결과는 다음과 같습니다.
- 10 단위에서 가장 가까운 값으로 반올림하면 80
- 100 단위에서 가장 가까운 값으로 반올림하면 100
- 1000 단위에서 가장 가까운 값으로 반올림하면 0
반올림 함수 작성하기
이제 반올림할 숫자를 첫 번째 인수로, 반올림할 단위(factor)를 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다.
핵심 아이디어는 간단합니다. 먼저 숫자를 해당 단위로 나누어 몫을 구한 뒤, Math.round()로 반올림하고 다시 단위를 곱해주는 것입니다. 이렇게 하면 어떤 단위로도 손쉽게 반올림할 수 있습니다.
예제 코드
const num = 76;
const roundOffTo = (num, factor = 1) => {
const quotient = num / factor;
const res = Math.round(quotient) * factor;
return res;
};
console.log(roundOffTo(num, 10));
console.log(roundOffTo(num, 100));
console.log(roundOffTo(num, 1000));위 코드에서 roundOffTo 함수는 다음과 같은 순서로 동작합니다.
num / factor로 몫을 계산합니다. 예를 들어 76 ÷ 10 = 7.6입니다.Math.round()로 몫을 반올림합니다. 7.6은 8이 됩니다.- 반올림된 값에 다시
factor를 곱합니다. 8 × 10 = 80이 최종 결과입니다.
두 번째 인수인 factor에는 기본값 1이 설정되어 있으므로, 인수를 생략하면 일반적인 정수 반올림과 동일하게 동작합니다.
출력 결과
80 100 0
이처럼 Math.round()와 나눗셈·곱셈만 조합하면 별도의 라이브러리 없이도 10, 100, 1000 등 임의의 단위로 숫자를 반올림할 수 있습니다. 같은 원리로 Math.floor()나 Math.ceil()을 사용하면 내림 또는 올림 처리도 가능합니다.