1. Number
2. 지수, 진법
3. Number 상수 값
4. Number 메서드
- 자바스크립트에서 일반적인 숫자는 64비트 형식의 IEEE-754 표준 기반 형태로 저장되는 자료형
- 10진수 외에도 16진수, 2진수, 8진수의 다양한 진수 사용
- 16진수(Hexadecimal) 표기: 0xFF
- 8진수 (Octal) 표기: 0o71
- 2진수 (Binary) 표기: 0b1101
- 대표 상수 값
- [MAX | MIN]_VALUE, [MAX | MIN]_SAFE_INTEGER, [POSITIVE | NEGATIVE]_INFINITY, NaN
- 대표 메서드
- 문자열 변환: Number.toString()
- 특정 자리수까지 제한하여 숫자 표현: Number.toFixed(), Number.toPrecision()
- 타입확인: Number.isNaN(), Number.isFinite()
- 지수 표기법 : 아주 큰 숫자나 아주 작은 숫자를 표기하기 위해 지수 표기법(e)으로 0의 개수를 대체 표기 가능
- 진법 표기 : 진법 표기를 지원하기 위해 0x(16진수), 0o(8진수), 0b(2진수)로 N진수 표기 가능
/* 지수 표기법(Exponential notation) */
let billion_1 = 1000000000; // 10억
let billion_2 = 1e9; // 1 + 0 9개
let us = 1e-6; // micro sec, 왼쪽으로 6번 소수점 이동
console.log(billion_1); // output: 1000000000
console.log(billion_2); // output: 1000000000
console.log(us); // output: 0.000001
/* N 진법 (Base N) */
console.log(0x0f); // output: 15
console.log(0o17); // output: 15
console.log(0b1111); // output: 15
- 지수로 표기되는 양수 최대/최소값: Number.MAX_VALUE, Number.MIN_VALUE
- 안전하게 표기되는 최대(양수)/최소(음수)값: Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER
- 무한대 양수/음수 값: Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY
- 부동 소수점 산술에서 정의되지 않거나 표현할 수 없는 값으로 해석될 수 있는 숫자 데이터 유형: Number.NaN
console.log(Number.MAX_VALUE); // output: 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // output: 5e-324
console.log(Number.MAX_SAFE_INTEGER); // output: 9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // output: -9007199254740991
console.log(Number.POSITIVE_INFINITY); // output: Infinity
console.log(Number.NEGATIVE_INFINITY); // output: -Infinity
console.log(Number.NaN); // output: NaN
console.log(NaN); // output: NaN
- 형 변환 : Number.toString(), String(Number), Number + ""를 통해 변환 가능
- 자리 수 표현
- 소수의 자리 수 길이를 제한 : Number.toFixed(pos)
- 정수와 소수의 자리 수를 합한 길이로 제한: Number.toPrecision(pos)
- 자료형 확인
- 부동 소수점 산술에서 정의되지 않거나 표현할 수 없는 값(NaN)인지 확인: Number.isNaN()
- 정상적인 유한수인지 확인: Number.isFinite()
- 정수와 실수 형 변환
- 정수로 변환하는 방법(N진수로 명시적 변환도 가능): Number.parseInt()
- 실수로 변환하는 방법: Number.parseFloat()
/* 형 변환 (Type casting) */
let us = 1e-6; // micro sec, 왼쪽으로 6번 소수점 이동
console.log(us.toString()); // output: 0.000001
console.log(typeof us.toString()); // output: string
console.log(typeof String(us)); // output: string
console.log(typeof (num + "")); // output: string
/* 자리수 표현 */
let num_1 = 125.0;
let num_2 = 123.456;
console.log(num_1 - num_2); // output: 1.5439999999999997
console.log(num_1 - num_2).toFixed(3); // output: 1.544
console.log(num_1 - num_2).toPrecision(3); // output: 1.54
/* 자료형 확인 */
console.log(!Number.isNaN(0.123)); // output: true
console.log(!Number.isNaN(123 / "hello")); // output: false
console.log(Number.isFinite(-123)); // output: true
console.log(Number.isFinite(Infinity)); // output: false
console.log(Number.isFinite("hello")); // output: false
/* 정수와 실수 형 변환 */
console.log(Number.parseInt("125px")); // output: 125
console.log(Number.parseFloat("1.25em")); // output: 1.25
console.log(Number.parseInt("1.25em")); // output: 1
console.log(Number.parseInt("t123")); // output: NaN
console.log(Number.parseInt("0f", 16)); // output: 15