Number
JavaScript에서 Number는 배정밀도 64비트 부동 소수점 형식을 사용하여 숫자를 나타냅니다. 이는 IEEE 754 표준을 따릅니다.
장점:
- 소수점을 포함한 대부분의 숫자를 표현할 수 있습니다.
- Number 타입은 JavaScript 엔진에서 널리 최적화되어 있어 연산이 빠릅니다.
- 일반적인 수학 연산에 적합하며, 대부분의 경우 Number 타입으로 충분합니다.
단점:
- Number 타입은 약 ±2^53의 값까지만 안전하게 표현할 수 있습니다. 이를 넘어서는 값은 정밀도가 떨어집니다.
- 매우 큰 정수를 정확하게 표현할 수 없어, 금융 계산이나 큰 정수를 요구하는 애플리케이션에는 적합하지 않습니다.
BigInt
BigInt는 JavaScript에서 매우 큰 정수를 나타내기 위한 데이터 타입입니다. BigInt를 사용하면 임의의 크기를 가진 정수를 안전하게 표현하고 연산할 수 있습니다.
장점
- 매우 큰 정수 값을 안전하게 표현하고 연산할 수 있습니다.
- 정밀한 금융 계산이나 큰 정수를 다루는 애플리케이션에 적합합니다.
- BigInt는 크기에 상관없이 정수 값을 정확하게 표현할 수 있습니다
단점
- BigInt 연산은 Number에 비해 느릴 수 있습니다.
- BigInt는 상대적으로 새로운 타입이므로 모든 JavaScript 환경에서 지원되지 않을 수 있습니다.
- BigInt는 정수만을 표현하기 위한 것이므로, 소수점 이하의 값을 표현할 수 없습니다.
벤치마크 테스트
function benchmarkNumberAddition() {
const start = performance.now();
let sum = 0;
for (let i = 0; i < 1000000; i++) {
sum += i;
}
const end = performance.now();
console.log(`Number addition took ${end - start} milliseconds.`);
}
function benchmarkBigIntAddition() {
const start = performance.now();
let sum = BigInt(0);
for (let i = 0n; i < 1000000n; i++) {
sum += i;
}
const end = performance.now();
console.log(`BigInt addition took ${end - start} milliseconds.`);
}
benchmarkNumberAddition();
benchmarkBigIntAddition();
결과
'Lab Notes' 카테고리의 다른 글
promise.all & promise.allsettled 이해하기 (0) | 2024.04.09 |
---|---|
setTimeout의 정확성 (0) | 2024.04.09 |
HTML vs XML (0) | 2023.11.09 |