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
'Front-End > JavaScript' 카테고리의 다른 글
| [Javascript] New Javascript 14장 - Symbol (심볼) (0) | 2025.09.15 |
|---|---|
| [Javascript] New Javascript 12장 정적 메서드/필드 (0) | 2025.09.12 |
| [Javascript] New Javascript 11장 프라이빗 필드/메서드 (0) | 2025.09.10 |
| [Javascript] New Javascript 10장 모듈 시스템 (0) | 2025.09.08 |
| [Javascript] New Javascript 9장 클래스 문법 (0) | 2025.09.06 |