on
[JavaScript] 데이터 타입 BigInt
[JavaScript] 데이터 타입 BigInt
BigInt 타입?
BigInt는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체입니다. 정수 리터럴 끝에 n을 붙이거나 함수 BigInt를 호출하면 문자열이나 숫자를 가지고 BigInt 타입의 값을 만들 수 있습니다.
즉, BigInt는 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형입니다.
BigInt타입 연산할 때
BigInt는 대개 일반 숫자와 큰 차이 없이 사용할 수 있습니다.
BigInt형 값을 대상으로 한 연산은 BigInt형 값을 반환합니다.
BigInt형 값과 일반 숫자를 섞어서 사용할 순 없습니다.
일반 숫자와 섞어서 써야 하는 상황이라면 BigInt()나 Number()를 사용해 명시적으로 형 변환을 해주면 됩니다.
const bigint = 1n; const number = 2; // 숫자를 bigint로 console.log(bigint + BigInt(number)); // 3n // bigint를 숫자로 console.log(Number(bigint) + number); // 3
여기서 bigint가 너무 커서 숫자형에서 허용하는 자릿수를 넘으면 나머지 비트는 자동으로 잘려 나갑니다. 이런 점을 염두하고 형 변환을 해야 합니다.
bigint를 숫자형으로 바꿀 때는 Number()를 사용해야 합니다. 단항 덧셈 연산자는 bigint에 사용할 수 없습니다.
BigInt를 문자열로 변환
const bigint = 5n; // bigint를 문자열로 형변환 // String 생성자와 BigInt.prototype.toString() console.log(`data : ${bigint}, data-type : ${typeof bigint}`); console.log(`data : ${String(bigint)}, data-type : ${typeof String(bigint)}`); console.log(`data : ${bigint.toString()}, data-type : ${typeof bigint.toString()}`); //OutPut // data : 5, data-type : bigint // data : 5, data-type : string // data : 5, data-type : string
비교 연산
비교 연산자 <, >는 bigint와 일반 숫자 모두에 사용할 수 있습니다.
그런데 비교하려는 대상이 다른 타입에 속하면 ==를 사용할 때는 같다고 나오지만, ===를 사용할 때는 다르다고 판단됩니다.
console.log( 3n > 1n ); // true console.log( 5n > 1 ); // true console.log( 1 == 1n ); // true console.log( 1 === 1n ); // false
논리 연산
bigint는 if 안이나 다른 논리 연산자와 함께 사용할 때 일반 숫자와 동일하게 행동합니다.
if안에서 0n은 falsy이고 다른 값들은 truthy로 평가됩니다.
||, && 등의 논리 연산자를 bigint에 적용할 때도 일반 숫자와 유사하게 동작합니다.
if(1n){ console.log("실행됩니다."); } console.log( 1n || 2 ); // 1 (1n은 truthy로 판단됩니다.) console.log( 0n || 2 ); // 2 (0n은 falsy로 판단됩니다.)
from http://jinblog123.tistory.com/58 by ccl(A) rewrite - 2021-09-19 02:01:49