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

JavaScript에서 부동 소수점 숫자의 정밀도를 처리하는 방법

JavaScript에서 부동 소수점(floating point) 숫자를 다룰 때는 정밀도 문제가 자주 발생합니다. 예를 들어 0.1 + 0.2의 결과가 정확히 0.3이 되지 않는 것처럼, 이진법 기반으로 실수를 표현하기 때문에 미세한 오차가 생길 수 있습니다.

이러한 정밀도 문제를 해결하고 숫자를 원하는 길이로 깔끔하게 포맷팅하려면 toPrecision() 메서드를 사용할 수 있습니다. 이 메서드는 숫자를 지정한 유효 자릿수(전체 자릿수)만큼 표현해 문자열로 반환합니다.

toPrecision() 메서드의 동작 방식

toPrecision()은 인자로 전달한 값만큼의 유효 숫자를 유지합니다. 지정한 자릿수가 소수점 앞자리보다 작으면 지수 표기법으로 변환되며, 인자를 생략하면 원래 숫자가 그대로 문자열로 반환됩니다.

예제

<!DOCTYPE html>
<html>
   <body>
      <script>
         var num = 28.6754;
         document.write(num.toPrecision(3));
         document.write("<br>"+num.toPrecision(2));
         document.write("<br>"+num.toPrecision(5));
      </script>
   </body>
</html>

출력 결과

28.7
29
28.675

결과 분석

  • num.toPrecision(3): 총 3자리 유효 숫자로 반올림하여 28.7을 반환합니다.
  • num.toPrecision(2): 총 2자리 유효 숫자로 반올림하여 29를 반환합니다.
  • num.toPrecision(5): 총 5자리 유효 숫자까지 표현하여 28.675를 반환합니다.

이처럼 toPrecision()을 활용하면 부동 소수점 연산으로 인한 불필요한 오차를 제거하고, 원하는 정밀도로 숫자를 일관성 있게 표시할 수 있습니다. 참고로 소수점 이하 자릿수만 기준으로 삼고 싶다면 toFixed() 메서드를 사용하는 것이 더 적합합니다.