자바스크립트에서 숫자는 64비트 부동소수점 형식으로 표현됩니다. 이는 매우 큰 수부터 작은 수, 그리고 소수점 아래의 값까지 다양하게 표현할 수 있지만, 정확도에 한계가 있을 수 있습니다.
2진수, 8진수 표현
- 2진수: 0b 또는 0B로 시작하는 숫자입니다. 예: 0b1010 (10진수 10)
- 8진수: 0o 또는 0O로 시작하는 숫자입니다. 예: 0o12 (10진수 10)
유용한 Number 메소드
Number.isInteger(number)
- 주어진 값이 정수인지 판별합니다.
- true: 정수일 때
- false: 정수가 아닐 때 (소수, NaN, Infinity 등)
console.log(Number.isInteger(42)); // true
console.log(Number.isInteger(3.14)); // false
Number.isNaN(value)
- 주어진 값이 NaN(Not a Number)인지 판별합니다.
- true: NaN일 때
- false: NaN이 아닐 때
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(undefined)); // false (undefined는 NaN이 아님)
Number.isFinite(number)
- 주어진 값이 유한한 숫자인지 판별합니다.
- true: 유한한 숫자일 때
- false: 무한대(Infinity, -Infinity) 또는 NaN일 때
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(42)); // true
Number.isSafeInteger(number)
- 주어진 값이 안전한 정수 범위 내에 있는지 판별합니다.
- 안전한 정수 범위는 JavaScript에서 정확하게 표현할 수 있는 가장 큰 음의 정수와 가장 작은 양의 정수 사이의 값입니다.
- true: 안전한 정수 범위 내에 있을 때
- false: 범위를 벗어나거나 NaN, Infinity일 때
console.log(Number.isSafeInteger(Math.pow(2, 53))); // true
console.log(Number.isSafeInteger(Math.pow(2, 53) + 1)); // false
Number.EPSILON 프로퍼티
- JavaScript에서 표현할 수 있는 가장 작은 양의 부동소수점 숫자입니다.
- 두 부동소수점 숫자의 차이가 EPSILON보다 작으면 거의 같다고 판단할 수 있습니다.
console.log(Number.EPSILON); // 매우 작은 숫자 (약 2.220446049250313e-16)
숫자 관련 추가 정보
- toFixed(): 소수점 아래 자릿수를 지정하여 문자열로 변환합니다.
- toPrecision(): 유효 자릿수를 지정하여 문자열로 변환합니다.
- parseInt(): 문자열을 정수로 변환합니다.
- parseFloat(): 문자열을 부동소수점 숫자로 변환합니다.
- Math 객체: 다양한 수학 함수를 제공합니다 (sin, cos, sqrt 등).
실제 사용 예시
// 사용자 입력을 숫자로 변환하고 유효성 검사
const userInput = prompt("숫자를 입력하세요");
const number = Number(userInput);
if (Number.isNaN(number)) {
console.log("숫자가 아닙니다.");
} else if (!Number.isInteger(number)) {
console.log("정수가 아닙니다.");
} else if (number > Number.MAX_SAFE_INTEGER || number < Number.MIN_SAFE_INTEGER) {
console.log("안전한 정수 범위를 벗어났습니다.");
} else {
console.log("유효한 정수입니다.");
}
728x90
'웹개발 > javascript' 카테고리의 다른 글
[자바스크립트] 객체 메서드 심층 분석 (0) | 2024.08.08 |
---|---|
[자바스크립트] 문자열 메서드 심층 분석 (0) | 2024.08.08 |
[자바스크립트] 배열 메서드 심층 분석 (0) | 2024.08.08 |
[자바스크립트] Blob 객체 알아보기 (0) | 2024.08.07 |
[자바스크립트] 비동기 처리 (0) | 2024.08.04 |