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

JavaScript Number.isSafeInteger() 함수 – 안전한 정수(Safe Integer) 판별 방법

JavaScript의 Number.isSafeInteger() 메서드는 숫자를 인자로 받아 해당 값이 안전한 정수(safe integer)인지 여부를 판별합니다. 주어진 숫자가 안전한 정수라면 true를, 그렇지 않다면 false를 반환합니다.

안전한 정수(Safe Integer)란?

안전한 정수란 JavaScript가 IEEE-754 배정밀도 부동소수점 방식으로 오차 없이 정확하게 표현할 수 있는 정수를 의미합니다. 그 범위는 -(2⁵³ − 1)부터 2⁵³ − 1까지, 즉 -9,007,199,254,740,991부터 9,007,199,254,740,991까지입니다. 이 경계값은 각각 Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER 상수로도 확인할 수 있습니다.

참고로 이 메서드는 인자로 전달된 값이 숫자 타입이 아니면 항상 false를 반환하며, 정수처럼 보여도 안전 범위를 벗어난 값이나 소수 역시 false를 반환합니다.

문법(Syntax)

Number.isSafeInteger(90071991);

예제 1

다음 예제는 특정 숫자가 안전한 정수인지 검사한 뒤, 결과에 따라 서로 다른 문구를 화면에 출력합니다.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var result = Number.isSafeInteger(90071991);
      if(result) {
         document.write("주어진 숫자는 안전한 정수입니다");
      }else {
         document.write("주어진 숫자는 안전한 정수가 아닙니다");
      }
   </script>
</body>
</html>

출력 결과

주어진 숫자는 안전한 정수입니다

90071991은 안전한 정수 범위(±9,007,199,254,740,991) 안에 포함되는 정수이므로 true가 반환됩니다.

예제 2

이번에는 소수, 음수, 그리고 수식 연산의 결과값을 각각 이 함수에 전달해 결과를 비교해 보겠습니다.

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var result1 = Number.isSafeInteger(45.2);
      document.write(result1);
      document.write("<br>");
      var result2 = Number.isSafeInteger(-38);
      document.write(result2);
      document.write("<br>");
      var result3 = Number.isSafeInteger(0/8);
      document.write(result3);
      document.write("<br>");
   </script>
</body>
</html>

출력 결과

false
true
true

결과 분석

45.2는 소수이기 때문에 false가 반환됩니다. 반면 -38은 음수이지만 안전 범위 안의 정수이므로 true이며, 0/8의 연산 결과인 0 역시 안전한 정수에 해당하므로 true가 반환됩니다. 이처럼 Number.isSafeInteger()는 값의 부호나 표현 방식과 무관하게 '정확하게 표현 가능한 정수'인지만을 기준으로 판별합니다.