본문 바로가기

프로그래밍 언어/자바스크립트

JavaScript에서 큰 숫자를 다루는 방법, BigInt 개념과 활용법

JavaScript에서 큰 숫자를 다루는 방법, BigInt 개념과 활용법

JavaScript에서 정수 숫자는 기본적으로 Number 타입으로 표현됩니다. 그러나 정확한 정수 연산이 필요한 매우 큰 숫자의 경우, Number가 제공하는 253-1의 한계를 넘어설 수 없습니다. 이러한 문제를 해결하기 위해 ECMAScript 2020부터 BigInt 타입이 도입되었습니다. 이번 글에서는 BigInt의 개념부터 실전 활용까지 체계적으로 정리합니다.

 

 

목차

  1. 왜 BigInt가 필요한가?
  2. BigInt 객체 생성 방법
  3. BigInt의 기본 연산
  4. Number와 BigInt 비교
  5. BigInt 사용 시 주의사항
  6. BigInt의 실전 활용 예시
  7. 정리 및 마무리

 

1. 왜 BigInt가 필요한가?

JavaScript의 Number 타입은 IEEE 754 64-bit 부동소수점 형식을 따릅니다. 이로 인해 다음과 같은 한계가 존재합니다:

  • 정확하게 표현 가능한 최대 정수: 2^53 - 1 (약 9,007,199,254,740,991)
  • 그 이상의 숫자는 정밀도가 손실됨

예시:
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 // true (정확하지 않음!)

금융 시스템, 암호화, 대규모 데이터 처리 등 정확한 대형 정수 연산이 필요한 상황에서 BigInt가 필수적입니다.

 

 

 

2. BigInt 객체 생성 방법

BigInt 객체는 두 가지 방식으로 생성할 수 있습니다:

  1. 리터럴 표기: 숫자 뒤에 n 추가 → const big = 12345678901234567890n;
  2. BigInt 생성자 함수: BigInt("12345678901234567890")
const a = 987654321987654321n;
const b = BigInt("12345678901234567890");

Tip: 문자열로 입력 시, 매우 큰 숫자도 안전하게 처리 가능!

 

 

 

3. BigInt의 기본 연산

BigInt는 +, -, *, /, % 등의 연산을 Number처럼 지원합니다.

연산 설명 예시
+ 덧셈 1000000000000n + 2000000000000n
* 곱셈 123456789n * 987654321n
/ 정수 나눗셈 (소수점 이하 버림) 10n / 3n → 3n

주의: BigIntNumber는 직접 연산 불가 → 명시적 변환 필요!

 

 

 

4. Number와 BigInt 비교

두 타입을 비교할 때 중요한 차이점은 다음과 같습니다:

특성 Number BigInt
정확한 표현 범위 ±253-1까지 무제한 (메모리 제약 내)
소수 지원 지원 미지원 (정수만 가능)
기본 연산 호환 다른 타입과 혼합 가능 Number와 혼합 불가

 

 

 

 

5. BigInt 사용 시 주의사항

BigInt는 매우 유용하지만 몇 가지 제한점이 있습니다:

  • 소수점 연산 불가 → BigInt(10.5)는 에러
  • JSON.stringify() 지원 불가 → BigInt는 문자열로 변환 후 직렬화 필요
  • 브라우저 호환성 확인 필요 (IE 등 구형 브라우저 미지원)

Tip: API 통신 시 BigInt는 문자열로 처리하는 것이 안전.

 

 

 

6. BigInt의 실전 활용 예시

BigInt의 주요 활용 분야는 다음과 같습니다:

  1. 블록체인, 암호화폐: 대형 정수 연산 필수
  2. 정밀 금융 계산: 소수점 없는 정수 연산 활용
  3. 고유 ID 생성: 대규모 데이터셋에서도 고유성 보장
  4. 암호화 알고리즘: RSA, Diffie-Hellman 등에서 필수적
// 예시: 매우 큰 ID 처리
const transactionId = BigInt("987654321987654321987654321");
console.log(transactionId * 10n);

 

 

 

7. 정리 및 마무리

BigInt는 JavaScript에서 대형 정수 연산을 정확하게 처리하기 위해 필수적인 타입입니다.

  • 정확한 정수 처리 필요 → BigInt 선택
  • Number와 혼합 연산 불가 → 명시적 변환 필요
  • JSON, 브라우저 호환성 고려 필요

핵심 요약: BigInt는 정밀하고 안정적인 정수 계산의 강력한 도구입니다. 사용 전 제한사항을 충분히 이해하고 활용하세요.