BigInt
Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체
const alsoHuge = BigInt(9007199254740991);
// ↪ 9007199254740991n
const hugeString = BigInt("9007199254740991");
// ↪ 9007199254740991n
const hugeHex = BigInt("0x1fffffffffffff");
// ↪ 9007199254740991n
const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111");
// ↪ 9007199254740991n
BigInt | Number |
내장 Math 객체의 메서도와 함께 사용 불가 | 내장 Math 객체의 메서드와 함께 사용 가능 |
연산에서 Number와 혼합 사용 불가 | |
=> 먼저 같은 자료형으로 변환해야함. |
- BigInt가 Number로 바뀌면 정확성을 잃을 수 있음
- BigInt는 BigDemical이 아니므로, 연산의 결과는 언제나 소수점 이하를 버림
- 즉, 정수가 아닌 결과는 나오지 않음
const rounded = 5n / 2n;
// ↪ 2.5n이 아니라 2n
- BigInt는 Number와 일치하지 않지만 동등하다
0n === 0
// ↪ false
0n == 0
// ↪ true
- BigInt와 Number는 일반적인 방법으로 비교할 수 있다.
1n < 2
// ↪ true
2n > 1
// ↪ true
2n > 2
// ↪ false
2n >= 2
// ↪ true
권장사항
- BigInt를 Number로 변환하는 과정에서 정확도를 유실할 수 있으므로, 2^53보다 큰 값을 예상할 수 있는 경우 BigInt만 사용하는 것이 좋음
- BigInt가 지원하는 연산의 소요시간은 상수 시간이 아니기 때문에 암호화에 적합하지 않음
'JS' 카테고리의 다른 글
[js] toFixed() 메서드 (0) | 2023.02.05 |
---|---|
[JS] 배열의 순서 (sort()메서드, reverse() 메서드) (0) | 2023.02.03 |
[JS] == , === 차이점 (0) | 2023.01.18 |
[JS] 배열 특정 값 포함 여부(includes, indexOf, some, every) (0) | 2023.01.17 |
[JS] 배열에서 특정 값의 개수 구하기 (0) | 2023.01.17 |