일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- TypeScript
- react-slick
- nest
- nextjs
- 로그스태시
- 카카오로그인
- nodemailer
- AGGREGATE
- Mongoose
- 참조에 의한 객체 복사
- JSON.stringify
- 캐러셀
- logstash
- 위크셋
- JavaScript
- JSON.parse
- 객체
- 카카오 소셜로그인
- MongoDB
- 중첩 구조 분해
- nestjs
- 자바스크립트
- context switch
- 이메일 전송
- 화살표 함수
- javacript
- Map
- 구조 분해 할당
- DB
- 위크맵
- Today
- Total
뚜sh뚜sh
[모던 JavaScript] 5.2 숫자형 본문
모던 자바스크립트는 숫자를 나타내는 두 가지 자료형을 지원함
1. 일반적인 숫자는 '배정밀도 부동소수점 숫자'로 알려진 64비트 형식의 IEEE-754에 저장됨
2. 임의의 길이를 가진 정수는 BigInt 숫자로 나타낼 수 있음 (일반적인 숫자는 2^53 이상이거나 -2^53 이하일 수 없다는 제약 때문에 BigInt 라는 새로운 자료형이 만들어짐)
숫자를 입력하는 다양한 방법
- 자바스크립트에서도 숫자 옆에 'e'를 붙이고 0의 개수를 그 옆에 붙여주면 숫자를 줄일 수 있음
- 즉, 'e'는 e 왼쪽의 수에 e 오른쪽에 있는 수만큼의 10의 거듭제곱을 곱하는 효과가 있음
let billion = 1e9; // 10억, 1과 9개의 0
alert( 7.3e9 ); // 73억 (7,300,000,000)
- 작은 숫자를 표현할 때도 큰 숫자를 표현할 때처럼 'e'를 사용할 수 있음
let ms = 1e-6; // 1에서 왼쪽으로 6번 소수점 이동
16진수, 2진수, 8진수
- 16진수는 0x를 사용해 표현할 수 있음
alert( 0xff ); // 255
alert( 0xFF ); // 255 (대·소문자를 가리지 않으므로 둘 다 같은 값을 나타냅니다.)
- 2진수와 8진수는 아주 드물게 쓰이긴 하지만, 접두사 0b와 0o를 사용해 간단히 나타낼 수 있음
let a = 0b11111111; // 255의 2진수
let b = 0o377; // 255의 8진수
alert( a == b ); // true, 진법은 다르지만, a와 b는 같은 수임
toString(base)
- num.toString(base) 메서드는 base 진법으로 num을 표현한 후, 이를 문자형으로 변환해 반환함
- base는 2에서 36까지 쓸 수 있는데, 기본값은 10임
let num = 255;
alert( num.toString(16) ); // ff
alert( num.toString(2) ); // 11111111
점 두 개와 메서드 호출
- 123456..toString(36) 에 있는 점 두 개는 오타가 아님, 숫자를 대상으로 메서드 toString을 직접 호출하고 싶다면 숫자 다음에 점 두 개를 붙여야함
- 123456.toString(36) 처럼 점을 한 개만 사용하면, 첫 번째 점 이후는 소수부로 인식되어 에러가 발생할 수 있음
어림수 구하기
- Math.floor : 소수점 첫째 자리에서 내림(버림)
- Math.ceil : 소수점 첫째 자리에서 올림
- Math.round : 소수점 첫째 자리에서 반올림
- Math.trunc : 소수부를 무시
부정확한 계산
- 숫자는 내부적으로 64비트 형식으로 표현되기 때문에 숫자를 저장하려면 정확히 64비트가 필요함
- 64비트 중 52비트는 숫자를 저장하는 데 사용되고, 11비트는 소수점 위치를(정수는 0), 1비트는 부호를 저장하는 데 사용됨
- 숫자가 너무 커지면 64비트 공간이 넘쳐서 Infinity 로 처리됨
isNaN과 isFinite
- Infinity, -Infinity : 그 어떤 숫자보다 큰 혹인 작은 특수 숫자 값
- NaN : 에러를 나타내는 값
- isNaN(value) : 인수를 숫자로 변환한 다음 NaN인지 테스트함, NaN은 자기 자신을 포함하여 그 어떤 값과도 같지 않음
- isFinite(value) : 인수를 숫자로 변환하고 변환한 숫자가 NaN/Infinity/-Infinity 가 아닌 일반 숫자인 경우 true를 반환함
Object.is와 비교하기
- Object.is는 === 처럼 값을 비교할 때 사용되는 특별한 내장 메서드임
- 비교 결과가 정확해야 하는 경우 Object.is를 사용함
parseInt와 parseFloat
- 두 함수는 불가능할 때까지 문자열에서 숫자를 '읽음'
- 숫자를 읽는 도중 오류가 발생하면 이미 수집된 숫자를 반환함
- parseInt는 정수, parseFloat는 부동 소수점 숫자를 반환함
parseInt(str, radix)의 두 번째 인수
- radix는 원하는 진수를 지정해 줄 때 사용함
기타 수학 함수
- Math.random() : 0과 1 사이의 난수를 반환함 (1은 제외)
- Math.max(a, b, c, ...) / Math.min(a, b, c, ...) : 인수 중 최대/최솟값을 반환함
- Math.pow(n, power) : n을 power번 거듭제곱한 값을 반환함
'Language > JavaScript' 카테고리의 다른 글
[모던 JavaScript] 5.4 배열 (2) | 2023.02.03 |
---|---|
[모던 JavaScript] 5.3 문자열 (0) | 2023.02.03 |
[모던 JavaScript] 5.1 원시값의 메서드 (0) | 2023.01.31 |
[모던 JavaScript] 4.8 객체를 원시형으로 변환하기 (0) | 2023.01.31 |
[모던 JavaScript] 4.7 심볼형 (0) | 2023.01.31 |