코딩 스쿨 JavaScript

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP
▶ JavaScript Tutorial
JavaScript HOME
JavaScript Introduction
JavaScript Where To
JavaScript Output
JavaScript Statements
JavaScript Syntax
JavaScript Comments
JavaScript Variables
JavaScript Let
JavaScript Const
JavaScript Operators
JavaScript Arithmetic
JavaScript Assignment
JavaScript Data Types
JavaScript Functions
JavaScript Objects
JavaScript Object Properties
JavaScript Object Methods
JavaScript Object Display
JavaScript Object Constructors
JavaScript Events
JavaScript Strings
JavaScript String Methods
JavaScript String Search
JavaScript String Templates
JavaScript Numbers
JavaScript BigInt
JavaScript Number Methods
JavaScript Number Properties
JavaScript Arrays
JavaScript Array Methods
JavaScript Array Search
JavaScript Array Sort
JavaScript Array Iteration
JavaScript Array Const
JavaScript Dates
JavaScript Date Formats
JavaScript Date Get Methods
JavaScript Date Set Methods
JavaScript Math
JavaScript Random
JavaScript Booleans
JavaScript Comparisons
JavaScript If Else
JavaScript Switch
JavaScript Loop For
JavaScript Loop For In
JavaScript Loop For Of
JavaScript Loop While
JavaScript Break
JavaScript Iterables
JavaScript Sets
JavaScript Set Methods
JavaScript Maps
JavaScript Map Methods
JavaScript Typeof
JavaScript Type Conversion
JavaScript Destructuring
JavaScript Bitwise
JavaScript RegExp
JavaScript Precedence
JavaScript Errors
JavaScript Scope
JavaScript Hoisting
JavaScript Strict Mode
JavaScript this Keyword
JavaScript Arrow Function
JavaScript Classes
JavaScript Modules
JavaScript JavaScriptON
JavaScript Debugging
JavaScript Style Guide
JavaScript Best Practices
JavaScript Mistakes
JavaScript Performance
JavaScript Reserved Words

JavaScript BigInt

JavaScript BigInt: 큰 정수를 다루는 방법

JavaScript의 BigInt는 매우 큰 정수를 다룰 수 있는 데이터 타입으로, 일반적인 Number 타입의 한계를 넘어서기 위해 도입되었습니다. BigInt는 2^53-1보다 큰 정수 값을 정확하게 표현할 수 있어, 대규모 계산이나 정밀한 수학 연산을 요구하는 상황에서 유용합니다. 이 가이드는 BigInt의 개념, 생성 방법, 사용법, 그리고 주의사항에 대해 상세히 설명합니다.


1. BigInt의 기본 개념

JavaScript에서 Number 타입은 64비트 부동 소수점 형식으로 저장되며, 이로 인해 표현할 수 있는 정수의 최대값은 2^53-1 (약 9,007,199,254,740,991)입니다. 이 값을 초과하는 정수는 정확하게 표현할 수 없습니다. BigInt는 이 한계를 극복할 수 있는 데이터 타입입니다.

1.1. BigInt의 특징

  • 정수 전용: BigInt는 정수만을 표현할 수 있으며, 소수점 이하 값은 지원하지 않습니다.
  • 안전한 정수: BigInt를 사용하면 큰 정수의 정확한 표현이 가능합니다.
  • Number와의 차이: BigInt는 Number 타입과는 별도로 존재하며, 서로 직접적으로 결합할 수 없습니다.

2. BigInt 생성 방법

2.1. 숫자 뒤에 n 추가

가장 간단한 방법은 숫자 뒤에 n을 추가하여 BigInt를 생성하는 것입니다.

const bigInt1 = 123456789012345678901234567890n;
console.log(bigInt1); // 출력: 123456789012345678901234567890n

2.2. BigInt() 생성자 사용

BigInt() 함수를 사용하여 문자열이나 숫자를 인수로 전달하여 BigInt를 생성할 수 있습니다.

const bigInt2 = BigInt(123456);
console.log(bigInt2); // 출력: 123456n

const bigInt3 = BigInt("123456789012345678901234567890");
console.log(bigInt3); // 출력: 123456789012345678901234567890n

2.3. 문자열을 사용한 생성

문자열을 BigInt로 변환할 때는 반드시 유효한 정수 형식이어야 합니다. 그렇지 않으면 SyntaxError가 발생합니다.

const bigInt4 = BigInt("123456789012345678901234567890");
console.log(bigInt4); // 출력: 123456789012345678901234567890n


3. BigInt 연산

BigInt는 일반적인 산술 연산자를 사용할 수 있습니다. 그러나 Number와는 직접적인 연산이 불가능하며, 이 두 타입을 혼합하여 사용할 경우 TypeError가 발생합니다.

3.1. 기본 산술 연산

const a = 100n;
const b = 200n;

console.log(a + b); // 출력: 300n
console.log(a * b); // 출력: 20000n
console.log(b - a); // 출력: 100n
console.log(b / a); // 출력: 2n
console.log(b % a); // 출력: 0n

3.2. Number와의 연산 주의사항

BigInt와 Number 간의 직접적인 연산은 허용되지 않으므로, 이를 조합하려면 한쪽 타입으로 변환해야 합니다.

const bigInt = 10n;
const number = 5;

// 다음 코드 실행 시 TypeError 발생
// console.log(bigInt + number); // TypeError

// 변환하여 연산 수행
console.log(bigInt + BigInt(number)); // 출력: 15n
console.log(Number(bigInt) + number); // 출력: 15


4. BigInt의 메서드

BigInt는 Number 객체와 유사한 메서드를 지원하지만, BigInt 전용 메서드는 없습니다. 하지만, 문자열로 변환하거나, 기타 메서드와 함께 사용할 수 있습니다.

4.1. toString()

BigInt를 문자열로 변환합니다.

const bigInt = 123456789012345678901234567890n;
console.log(bigInt.toString()); // 출력: "123456789012345678901234567890"

4.2. valueOf()

BigInt의 원시 값(Primitive value)을 반환합니다. 주로 다른 타입과의 비교에서 사용됩니다.

console.log(bigInt.valueOf()); // 출력: 123456789012345678901234567890n


5. 주의사항

  • 정밀도 문제: BigInt는 정수만 다루므로, 소수점 이하가 포함된 숫자를 다룰 때는 사용할 수 없습니다. 예를 들어, BigInt(3.14)3n으로 변환됩니다.
console.log(BigInt(3.14)); // 출력: 3n

  • BigInt와 JSON: JSON에서는 BigInt를 지원하지 않으므로, BigInt를 JSON으로 변환하려면 문자열로 변환해야 합니다.
const obj = { value: 123456789012345678901234567890n };
const jsonString = JSON.stringify({ value: obj.value.toString() });
console.log(jsonString); // 출력: {"value":"123456789012345678901234567890"}

  • 표현의 일관성: BigInt와 Number 타입을 혼합하여 사용할 경우, 각 타입에 맞게 변환하여 일관성을 유지해야 합니다.

요약

  • BigInt: JavaScript에서 매우 큰 정수를 다루기 위한 데이터 타입으로, 2^53-1을 초과하는 정수를 안전하게 표현할 수 있습니다.
  • 생성 방법: 숫자 뒤에 n을 추가하거나, BigInt() 생성자를 사용할 수 있습니다.
  • 산술 연산: 일반적인 산술 연산자를 지원하지만, Number와의 직접적인 연산은 불가능합니다.
  • 주의사항: 소수점 처리 불가, JSON 지원 문제 등 사용 시 유의해야 할 점들이 있습니다.

JavaScript의 BigInt를 효과적으로 활용하면, 대규모 수학적 계산 및 정밀한 수치 처리를 가능하게 합니다. 이 기능을 통해 더 안전하고 정확한 데이터 처리를 구현해 보세요!


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com