[자바스크립트 ES6+ 기본] 10. Number 오브젝트
IEEE 754
- 자바스크립트는 IEEE 754에 정의된 64비트 부동 소수점으로 수를 처리 (double-precision floating-point format numbers)
- 64비트로 최소값과 최대값을 처리
- 정수와 실수 구분 안함
- 1을 1.0으로 처리
- 1 + 1.2 가능
64비트 구성
-
사인 비트
- 63: 1비트
- 값이 0이면 양수, 1이면 음수
-
지수 (exponent)
- 52~62: 11비트
-
가수 (fraction)
- 0~51: 52비트 + 1(사인 비트): 53비트
Number 상수
-
safe integer란
- 지수(e)를 사용하지 않고 나타낼 수 있는 값
- 2의 64승이 아닌 2의 53승
-
Number.MAX_SAFE_INTEGER
- safe integer 최대값
log(Number.MAX_SAFE_INTEGER);
log(Math.pos(2, 53) - 1);
// 9007199254740991
// 9007199254740991
- Number.MIN_SAFE_INTEGER
- safe integer 최소값
log(Number.MIN_SAFE_INTEGER);
log(-(Math.pos(2, 53) - 1));
// -9007199254740991
// -9007199254740991
Number.EPSILON
- 아주 작은 값
- 2.220446049250313080847263361816E-16 또는 2^(-52)
- 사용 사례
- 미세한 값 차이 형태 (부동 소수점 처리 때문)
const total = 0.1 + 0.2;
log(total);
log(total === 0.3);
// 0.3000000000000004
// false
- 미세한 값 차이를 같은 값으로 간주
const value = Math.abs(0.1 + 0.2 - 0.3);
log(value < Number.EPSILON);
// true
- 0 / 0으로 NaN가 되는 것을 방지
log(0 / 0);
const value = 0 / (0 + Number.EPSILON);
log(value);
// NaN
// 0
진수
- Binary(2진수)
- 0b0101, 0B0101 형태로 작성
- 숫자 0 다음에 b/B 작성하고 이어서 0 또는 1로 값을 작성
const value = 0B111;
log(value);
// 7
- Octal(8진수)
- 0O0105 형태로 작성
- 숫자 0 다음에 영문 o/O 작성하고 이어서 0~7로 값을 작성
- ES3는 첫 자리에 영문 o/O 작성
const value = 0o111; // 1 + 8 + 64
log(value);
// 73
Author And Source
이 문제에 관하여([자바스크립트 ES6+ 기본] 10. Number 오브젝트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bbirong/자바스크립트-ES6-기본-10.-Number-오브젝트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)