Number.isInterger() 메서드를 사용하면 값이 정수인지 확인할 수 있다.
Number.isInteger(value)
대상 값이 정수 혹은 정수로 표현할 수 있는 부동 소수점 숫자면 true를 반환한다.
정수가 아니거나, 값이 NaN 혹은 Infinity, 혹은 숫자가 아닌 다른 것인 경우 false를 반환한다.
+) 아주 작은 값인 경우 정수로 표현된다.
일부 숫자 리터럴은 정수가 아닌 것처럼 보이지만 실제로는 정수를 나타낼 때가 있다.
ECMAScript 부동 소수점 숫자 인코딩의 정밀도 제한(IEEE-754)으로 인해 발생한 것이다.
예를 들어 5.0000000000000001는 5와 1e-16만큼만 차이가 나며, 이는 너무 작아서 표현할 수 없다.
(참고로, Number.EPSILON은 1과 1보다 큰 다음 표현 가능한 부동 소수점 수 사이의 거리를 저장하며, 이는 약 2.22e-16)
따라서 5.0000000000000001는 5와 동일한 인코딩으로 표현되므로 Number.isInteger(5.0000000000000001)는 true를 반환하게 된다. 이와 비슷하게 Number.MAX_SAFE_INTEGER의 주변의 숫자는 정밀도 손실로 인해 정수가 아닌 경우에도 Number.isInteger가 true를 반환하게 된다.
(실제 임계값은 10진수를 표현하는 데 필요한 비트 수에 따라 달라진다. 예를 들어, Number.isInteger(4500000000000000.1)는 true이지만, Number.isInteger(4500000000000000.5)는 false이다.)
'자바스크립트(JavaScript) > 프로그래머스 문제풀기' 카테고리의 다른 글
[programmers - js] 모음 제거 / 정규표현식 캡처링, includes, replaceAll (0) | 2024.12.16 |
---|---|
[programmers - js] 짝수, 홀수 개수 / for...of 반복문 (0) | 2024.12.16 |
[programmers - js] 중앙값 구하기 / sort((a,b) => a - b) (0) | 2024.12.16 |
[programmers - js] 배열의 유사도 (0) | 2024.12.16 |
[programmers - js] 문자열 뒤집기 (0) | 2024.12.16 |