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

JavaScript에서 숫자가 안전한 정수인지 확인하는 방법 – Number.isSafeInteger() 완벽 가이드

JavaScript는 숫자를 다룰 때 몇 가지 제약이 있습니다. 모든 숫자는 표준화된 컴퓨터 네트워크 형식(IEEE 754 배정밀도 부동소수점)을 따라야 하며, 이 규칙을 벗어나는 정수는 안전한 정수(safe integer)로 취급될 수 없습니다.

안전한 정수란 -(2^53 - 1)부터 (2^53 - 1)까지의 모든 정수, 즉 ±9007199254740991(±9,007,199,254,740,991) 범위 내의 값을 의미합니다. 이 범위를 벗어나면 정밀도 손실로 인해 연산 결과가 부정확해질 수 있기 때문입니다.

주어진 숫자가 안전한 정수인지 확인하려면 Number.isSafeInteger() 메서드를 사용해야 합니다.

문법(Syntax)

Number.isSafeInteger(num);

이 메서드는 숫자 하나를 매개변수로 받아, 해당 숫자가 안전한 정수 범위 내에 있는지 검사합니다. 범위 내에 있다면 true, 그렇지 않다면 false를 반환합니다.

예제 1 – 안전한 정수인 경우

다음 예제에서 사용된 두 숫자는 모두 -(2^53 - 1)부터 (2^53 - 1)까지의 범위 안에 있습니다. 따라서 Number.isSafeInteger() 메서드는 두 값 모두 true로 평가합니다.

<html>
<body>
<script>
    var u = Number.isSafeInteger((Math.pow(2,53))-1);
    var res = Number.isSafeInteger(-1);
    document.write(res);
    document.write("</br>");
    document.write(u);
</script>
</body>
</html>

출력 결과

true
true

(2^53 - 1)은 안전한 정수 범위의 상한값이므로 true가 반환되고, -1 역시 범위 내의 값이기 때문에 true가 반환됩니다.

예제 2 – 안전한 정수가 아닌 경우

다음 예제에서 사용된 숫자는 -(2^53 - 1)부터 (2^53 - 1)까지의 범위를 벗어납니다. 따라서 Number.isSafeInteger() 메서드는 해당 값을 false로 평가합니다.

<html>
<body>
    <script>
        var u = Number.isSafeInteger(-(Math.pow(2,53))-5);
        document.write(u);
    </script>
</body>
</html>

출력 결과

false

-(2^53) - 5는 안전한 정수 하한값보다 작기 때문에 false가 반환됩니다.

정리

JavaScript에서 큰 정수를 다룰 때는 반드시 안전한 정수 범위를 고려해야 합니다. Number.isSafeInteger()를 활용하면 값이 정확하게 표현 가능한 범위 내에 있는지 손쉽게 검증할 수 있으며, 이를 통해 정밀도 손실로 인한 예기치 않은 버그를 예방할 수 있습니다.