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_INTEGER와 Number.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()는 값의 부호나 표현 방식과 무관하게 '정확하게 표현 가능한 정수'인지만을 기준으로 판별합니다.