본문 바로가기
dev/javascript

[javascript] 자바스크립트 BigInt

by 최연탄 2023. 6. 7.
728x90
반응형

참고: https://www.javascripttutorial.net/es-next/javascript-bigint/

이 포스트에서는 253 - 1 보다 큰 정수를 나타낼 수 있는 내장 객체인 BigInt 타입에 대해 알아보겠습니다.

JavaScript BigInt

ES2020에서는 253 - 1 보다 큰 정수를 표현하는 새로운 빌트인 객체인 BigInt를 도입했습니다. BigInt는 number, string, symbol, boolean, undefined, null과 같은 기본 타입입니다.

BigInt를 만들려면 다음의 예제 처럼 숫자 리터럴 뒤에 n을 추가하면 됩니다:

let bigInt = 9007199254740991n;

아니면 BigInt() 함수를 호출하면 됩니다:

let bigInt = BigInt(9007199254740991);

다음의 Number 객체의 계산 결과를 보겠습니다:

let x = Number.MAX_SAFE_INTEGER;
console.log(x);
x = x + 1;
console.log(x);
x = x + 1;
console.log(x);

위와 같은 계산을 BigInt로 하면 다음과 같습니다:

let x = BigInt(Number.MAX_SAFE_INTEGER);
console.log(x);
x = x + 1n;
console.log(x);
x = x + 1n;
console.log(x);

타입

다음의 예와 같이 BigInt의 타입은 bigint 입니다:

console.log(typeof BigInt(100));
console.log(typeof BigInt(100) === 'bigint');

연산자

BigInt는 >>>(0으로 채우는 오른쪽 시프트)를 제외한 +, *, -, **, %, 비트 연산자를 지원합니다. 단항 연산자(+)는 지원하지 않습니다. / 연산자는 정수와 사용할 수도 있는데 결과 값으로 소수점 자릿수를 반환하지는 않습니다. 다음의 예제를 보겠습니다:

let result = 3n / 2n;
console.log(result);

비교

BigInt는 Number와 엄격하게 같지(===) 않습니다.

하지만 == 연산자로 Number와 비교하면 같습니다.

BigInt와 Number는 <, <=, >, >= 로 비교할 수 있습니다.

조건

BigInt는 if 문 또는 논리 연산자 ||, &&, ! 과 같은 조건문에 쓰일 때 Boolean() 함수를 통해 boolean 값으로 변환됩니다.

let count = 0n;

if (count) {
    console.log(true);
} else {
    console.log(false);
}

정리

BigInt는 새로운 기본 타입으로 JavaScript의 Number 타입으로 안전하게 표현할 수 있는 가장 큰 숫자인 253 - 1 보다 큰 정수를 표현할 수 있습니다.

bigint를 생성하려면 숫자 리터럴 뒤에 n을 붙이거나 BigInt() 함수를 사용합니다.

관련 글

자바스크립트 Number 타입 사용 방법

반응형

댓글