자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Javascript] New Javascript 13장 - BigInt(큰 정수 처리)

728x90

✅ 1. BigInt - 큰 정수 처리

Javascript에서 일반적인 숫자(Number)는  2^53 - 1(약 9경)까지 처리할 수 있지만 그 이상의 수까지 처리하기 위해서는 BigInt를 사용해서 처리해야 합니다. BigInt를 생성하려면 다음과 같습니다.

// ✅ BigInt 생성하기 - 숫자 뒤에 n을 붙이거나 BigInt() 함수 사용
const big1 = 1234567890123456789012345678901234567890n; // 숫자 뒤에 n을 붙임
const big2 = BigInt("1234567890123456789012345678901234567890"); // BigInt() 함수 사용

console.log(big1); // 1234567890123456789012345678901234567890n
console.log(big2); // 1234567890123456789012345678901234567890n

✅ 2. BigInt 연산 처리

BigInt끼리 기본적인 연산을 처리할 수 있습니다. Number(숫자)와 혼합 연산은 불가능합니다.

// BigInt 연산
const a = 10n;
const b = 3n;

console.log(a + b); // 13n
console.log(a - b); // 7n
console.log(a * b); // 30n
console.log(a / b); // 3n (소수점 이하는 버림)
console.log(a % b); // 1n

 

여기서 주의점은 일반 Number와 연산하려고 하면 에러가 발생합니다.

const c = 5;
console.log(a + c); // TypeError: Cannot mix BigInt and other types

✅ 3. 비교 연산

BigInt는 Number와 비교도 가능하나 암묵적인 변환에 주의해야 합니다.

// BigInt 비교 연산
const big = 100000000000000000000n; // Number.MAX_SAFE_INTEGER 보다 큰 BigInt
const min = 1e20; // 10의 20제곱 (100000000000000000000)

console.log(big === min); // false (타입이 다름)
console.log(big == min); // true (타입 변환 후 비교);

✅ 4. 실무에서 활용하는 법

  • 금융 계산 - 초단위, 센트 단위 등 큰 수 처리 
  • 암호화, 해시 계산 - 2^53 이상 큰 수 필요 시
  • 빅데이터 ID 처리 - 64bit ID를 안전하게 저장하기 위함
// 실무 활용

// 1. 금융 계산 예제
// BigInt를 사용하여 큰 금액을 정확하게 계산
const accountBalance = 9007199254741991n; // 2^53 - 1 (Number.MAX_SAFE_INTEGER)
const deposit = 5000000000000000n; // 큰 금액 입금

const newBalance = accountBalance + deposit; // accountBalance + 큰 금액 desposit
console.log(`새 계좌 잔액: ${newBalance}원`); // 새 계좌 잔액: 14007199254741991원

console.log("---------------------------------");

// 2. 암호화, 해시 계산 예제
// BigInt를 사용하여 큰 수의 모듈로 연산 수행
const LargePrime = 324161907n; // 큰 소수
const LargeNumber = 123456789012345678901234567890n; // 큰 수
const hasValue = LargeNumber % LargePrime; // 큰 수를 큰 소수로 나눈 나머지 계산

console.log(`해시 값: ${hasValue}`); // 해시 값: 121932631112635269

console.log("---------------------------------");

// 3. 빅 데이터 ID 처리 예제
// BigInt를 사용하여 매우 큰 ID 값을 정확하게 처리
const userId = 9007199254741991n; // 큰 사용자 ID
const newUserId = userId + 1n; // 다음 사용자 ID 생성

console.log(`이전 사용자 ID: ${userId}, 새 사용자 ID: ${newUserId}`);

✅ 참고 사항

  • BigInt는 정수만 지원하며 소수점을 불가능
  • JSON 변환 시 JSON.Stringify()가 자동 변환 불가능해 문제열로 변환해야함
// BigInt 정수만 지원, 소수점 불가
// Json 문자열로 변환 시 BigInt는 지원하지 않음
// 문자열로 변환 후 사용 가능
const big = 1234567890123456789012345678901234567890n;
const jsonString = JSON.stringify(big.toString());

console.log(jsonString); // "1234567890123456789012345678901234567890"

 

 

GitHub - javascript-only/newJSRoom: https://thinky.tistory.com/category/Front-End/JavaScript

https://thinky.tistory.com/category/Front-End/JavaScript - javascript-only/newJSRoom

github.com

 

728x90
LIST