숫자형 (number)
Summary
모던 자바스크립트는 숫자를 나타내는 주요 자료형으로 IEEE-754 64비트 배정밀도 부동소수점 형식을 사용한다. 또한, BigInt를 사용하여 매우 큰 정수를 다룰 수 있다.
Details
숫자를 입력하는 다양한 방법
노트
큰 숫자를 표현할 때 e 표기법을 사용하면 가독성이 향상된다.
let billion = 1e9; // 10억
alert(7.3e9); // 73억
작은 숫자 표현에도 e를 사용할 수 있다.
let ms = 1e-6; // 0.000001
다양한 진법 표현
팁
자바스크립트는 16진수, 8진수, 2진수를 직접 지원한다.
alert(0xff); // 255 (16진수)
alert(0b11111111); // 255 (2진수)
alert(0o377); // 255 (8진수)
또한 toString(base) 메서드를 이용하면 원하는 진법으로 변환할 수 있다.
let num = 255;
alert(num.toString(16)); // ff
alert(num.toString(2)); // 11111111
어림수 구하기
정보
소수를 다룰 때는 Math 객체의 어림수 함수들을 활용한다.
| 함수 | 설명 |
|---|---|
Math.floor(x) | 내림 (버림) |
Math.ceil(x) | 올림 |
Math.round(x) | 반올림 |
Math.trunc(x) | 소수부 제거 |
alert(Math.floor(3.7)); // 3
alert(Math.ceil(3.1)); // 4
alert(Math.round(3.5)); // 4
alert(Math.trunc(3.9)); // 3
소수점 n번째 자리까지 반올림하려면 toFixed(n)을 사용한다.
let num = 12.345;
alert(num.toFixed(2)); // "12.35"
부정확한 계산
경고
자바스크립트는 부동소수점 연산에서 정밀도 손실이 발생할 수 있다.
alert(0.1 + 0.2 == 0.3); // false
alert(0.1 + 0.2); // 0.30000000000000004
해결 방법:
let sum = 0.1 + 0.2;
alert(+sum.toFixed(2)); // 0.3
숫자 변환
parseInt와 parseFloat를 사용하면 숫자 변환이 가능하다.
alert(parseInt('100px')); // 100
alert(parseFloat('12.5em')); // 12.5
진법을 지정하여 변환할 수도 있다.
alert(parseInt('ff', 16)); // 255
기타 수학 함수
팁
Math 객체를 활용하면 다양한 수학 연산을 수행할 수 있다.
alert(Math.random()); // 0과 1 사이의 난수
alert(Math.max(3, 5, -10, 0, 1)); // 5
alert(Math.pow(2, 10)); // 1024
Reference
author note: Related note in this repo
link: External reference