JavaScript bigint, 정수 제한을 넘어선 대형 숫자 처리
JavaScript는 수학적 연산을 다루는 데 있어 중요한 기능을 제공하지만, 기본적인 Number
타입은 253-1 이상의 숫자를 처리할 수 없습니다. 이러한 한계를 해결하기 위해 ES2020에서 도입된 bigint
타입은 매우 큰 정수를 손실 없이 처리할 수 있도록 지원합니다. 이 가이드에서는 bigint
의 기본 개념부터 실제 활용까지 단계적으로 설명합니다.
목차
bigint란 무엇인가?
bigint
는 JavaScript에서 매우 큰 정수를 처리할 수 있는 데이터 타입입니다. 기존의 Number
타입은 최대 253 - 1까지 표현할 수 있지만, bigint
는 이보다 훨씬 더 큰 범위의 정수를 정확하게 처리할 수 있습니다. bigint
는 숫자의 끝에 n
을 붙여서 선언하며, 이를 통해 큰 숫자도 정밀하게 다룰 수 있습니다.
bigint 생성 방법
JavaScript에서 bigint
를 생성하는 방법은 간단합니다. 두 가지 방식으로 생성할 수 있으며, 숫자의 끝에 n
을 붙이는 방법과 BigInt()
생성자를 사용하는 방식이 있습니다.
1. 숫자 뒤에 n
을 붙이는 방법
let bigNum = 1234567890123456789012345678901234567890n;
위 예제처럼 큰 숫자 뒤에 n
을 붙이면 bigint
타입의 숫자가 생성됩니다.
2. BigInt()
생성자 사용
let bigNum = BigInt("1234567890123456789012345678901234567890");
BigInt()
생성자를 사용해 문자열 형태의 숫자를 bigint
로 변환할 수 있습니다.
bigint와 Number 비교
bigint
와 Number
는 모두 숫자를 표현하지만, 그 범위와 정확도 면에서 차이가 있습니다.
- 정밀도:
Number
는 부동 소수점 기반이므로 매우 큰 숫자는 정밀도가 손실될 수 있습니다. 반면,bigint
는 큰 숫자도 손실 없이 표현할 수 있습니다. - 성능:
bigint
는 매우 큰 숫자를 처리할 수 있지만, 연산 속도는Number
보다 느릴 수 있습니다. - 호환성:
bigint
는Number
와 직접적으로 연산할 수 없으며, 두 타입을 함께 사용하려면 명시적으로 변환해야 합니다.
예를 들어, 다음과 같은 코드는 오류를 발생시킵니다.
let bigNum = 1000n;
let num = 500;
console.log(bigNum + num); // TypeError 발생
이 문제를 해결하려면 두 타입 중 하나를 변환해야 합니다.
console.log(bigNum + BigInt(num)); // 올바른 결과 출력
bigint 연산
bigint
는 기본적인 산술 연산을 지원합니다. 덧셈, 뺄셈, 곱셈, 나눗셈 등을 bigint
타입으로 처리할 수 있습니다.
1. 덧셈
let a = 100n;
let b = 200n;
let sum = a + b;
console.log(sum); // 300n 출력
2. 나눗셈
bigint
의 나눗셈은 Number
와 달리 소수점 아래 숫자를 버립니다.
let x = 10n;
let y = 3n;
console.log(x / y); // 3n 출력
bigint 사용 시 주의사항
bigint
는 매우 유용하지만 몇 가지 주의사항이 있습니다.
- JSON 변환 불가:
bigint
는 JSON 형식으로 직렬화할 수 없습니다. 이를 직렬화하려고 하면 오류가 발생합니다. 대신,string
으로 변환한 후 처리해야 합니다. - 타입 간 연산 불가:
Number
와bigint
간에는 연산이 불가능하므로, 연산을 하기 전에 명시적인 타입 변환이 필요합니다. - 브라우저 호환성: 모든 브라우저에서
bigint
를 지원하지 않을 수 있으므로, 호환성 검토가 필요합니다.
실용적인 bigint 활용 예제
bigint
는 특히 암호화, 금융 계산, 대형 데이터 처리 등 매우 큰 숫자를 다룰 필요가 있는 상황에서 유용합니다.
1. 금융 계산에서의 bigint 활용
let largeAmount = 1000000000000000000000000n;
let interestRate = 5n;
let total = largeAmount + (largeAmount * interestRate / 100n);
console.log(total); // 큰 숫자 연산 결과 출력
위 예제는 금융 계산에서 큰 숫자에 대한 이자 계산을 다룹니다. bigint
를 사용함으로써 큰 금액을 정확하게 처리할 수 있습니다.
2. 암호화 및 해시 계산에서의 bigint
암호화 알고리즘에서 큰 정수를 다루는 것은 필수적입니다. bigint
는 이러한 작업에서 데이터 정확도를 보장해 줍니다.
let bigPrime = 1234567890123456789012345678901234567890n;
let secretKey = 987654321098765432109876543210987654321n;
let encrypted = bigPrime * secretKey;
console.log(encrypted); // 암호화된 큰 숫자 출력
결론
JavaScript의 bigint
는 기존의 Number
타입으로 처리할 수 없는 매우 큰 숫자를 다룰 때 필수적인 도구입니다. 특히 대형 데이터, 금융 계산, 암호화 등 다양한 분야에서 매우 유용하게 사용될 수 있습니다. 이 가이드를 통해 bigint
를 활용하여 더 나은 숫자 처리 방법을 찾아보세요.
'프로그래밍 언어 > 자바스크립트' 카테고리의 다른 글
JavaScript Symbol, 고유한 식별자를 생성하는 방법 (0) | 2024.10.06 |
---|---|
JavaScript string 타입의 특성과 주요 활용 방법 (0) | 2024.10.02 |
JavaScript number 타입, 숫자 처리 및 연산 방법 (0) | 2024.09.24 |
JavaScript boolean 타입, 참과 거짓의 논리적 표현 (0) | 2024.09.20 |
JavaScript null이란? 값 없음(null)과 정의되지 않음(undefined)의 차이 (0) | 2024.09.16 |