Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 숫자를 가장 가까운 10의 거듭제곱으로 반올림하는 방법

이 글에서는 하나의 숫자를 인수로 받아, 그 숫자에 가장 가까운 10의 거듭제곱을 반환하는 JavaScript 함수를 작성하는 방법을 살펴보겠습니다.

함수의 동작 결과는 다음과 같습니다.

f(1) = 1
f(5) = 1
f(15) = 10
f(43) = 10
f(456) = 100
f(999) = 100

즉, 입력값의 자릿수에 맞춰 가장 근접한 10의 거듭제곱(1, 10, 100, 1000 등)을 찾아 반환하는 것이 핵심입니다.

구현 예시

const num = 2355;
const num1 = 346;
const num2 = 678;
const nearestPowerOfTen = (num) => {
   let count = 0;
   while(num > 1){
      count++;
      num /= 10;
   }
   return Math.pow(10, count-1) * (Math.round(num) ? 10 : 1);
}
console.log(nearestPowerOfTen(num));
console.log(nearestPowerOfTen(num1));
console.log(nearestPowerOfTen(num2));

코드 동작 원리

이 함수는 크게 세 단계로 동작합니다.

1단계 - 자릿수 세기: 숫자가 1보다 큰 동안 계속 10으로 나누면서 나눈 횟수를 count 변수에 저장합니다. 이 횟수는 곧 입력 숫자의 자릿수를 의미합니다.

2단계 - 반올림 판단: 루프가 종료되면 남은 값은 1 이하의 소수입니다. 이 값을 Math.round()로 반올림했을 때 1이 되면(즉, 0.5 이상이면) 유효 숫자가 반올림 기준을 넘었으므로 한 단계 높은 거듭제곱으로 올립니다.

3단계 - 결과 반환: Math.pow(10, count-1)를 기준값으로 삼고, 앞서 판단한 조건에 따라 10을 곱해 다음 자릿수로 올리거나 그대로 반환합니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

1000
100
1000

2355는 1000에 더 가깝고, 346은 100에, 678은 1000에 각각 더 가까우므로 함수가 정확히 의도한 대로 동작하는 것을 확인할 수 있습니다.