BigInt

민겸·2024년 5월 17일
1

JavaScript

목록 보기
21/21

BigInt란

BigIntNumber 원시 값이 안정적으로 나타낼 수 있는 최대치인 25312^{53} - 1보다 큰 정수를 표현할 수 있는 자바스크립트 내장 객체이다.

BigInt는 정수 리터럴 뒤에 n을 붙이거나 함수 BigInt()를 호출해 생성할 수 있다.

const aBigInt = 90000000000000000n;

const bBigInt = BigInt(90000000000000000);

const cBigInt = BigInt("90000000000000000");

BigIntNumber는 비슷해보이지만 차이가 있다. BigInt는 Math객체와 함께 사용할 수 없고, 연산에서 Number와 혼합 사용할 수 없다.

그러므로 연산을 해야한다면 BigInt로 전부 바꾼 후 연산을 진행해야 한다.

BigInt와 가능한 연산

+, *, -, **, % 연산자 모두 BigInt와 사용할 수 있다. 비트 연산자와도 사용이 가능하지만 모든 BigInt는 부호를 가져야 해서 >>> 부호 버림 오픈쪽 시프트는 함께 사용할 수 없다. 또한, / 연산자는 사용 가능하지만 연산 결과로 인해 나오는 소수점은 버리고 정수 결과만을 도출한다.

BigInt와 Number 비교

BigIntNumber와 일치하지 않지만 동등하다.

0n === 0; // false
0n -- 0; // true

NumberBigInt는 다음과 같이 비교 가능하다.

1n < 2; // true
2n > 1; // true
2n > 2; // false
2n >= 2; // true

배열 안에 NumberBigInt를 섞었을 때 정렬이 가능하다.

const mixed = [1n, 2, 3n, 4, 5n, 6];

mixed.sort((a, b) => b - a);
// [6, 5n, 4, 3n, 2, 1n];

BigInt와 조건

BigInt는 다음 상황에서 Number처럼 간주된다.

  • Boolean 함수를 사용해 Boolean 객체로 변환
  • 논리 연산자 ||, %%, !와 함께 사용
  • if문 등 조건 판별 시
if(0n) console.log("ㅎㅇ");
else console.log("ㄴㄴ");
// "ㄴㄴ"
// 0n이 0으로 간주됨.

0n || 12n;
// 12n
// 0n이 0으로 간주됨.

0n && 12n;
// 0n
// 0n이 0으로 간주됨.

Boolean(0n);
// false
// 0n이 0으로 간주됨.

Boolean(12n);
// true
// 12n이 12로 간주됨.

!12n;
// false
// 12n이 12로 간주됨.

!0n;
// true
// 0n이 0으로 간주됨.

BigInt는 직렬화가 불가능하다.

profile
기술부채상환중...

2개의 댓글

comment-user-thumbnail
2024년 6월 10일

빨리 기술 부채 상환하세요

1개의 답글

관련 채용 정보