Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# BigInteger 클래스 완벽 가이드 – 초대형 정수 다루기

C#에서 long(Int64)의 최댓값조차 감당할 수 없는 매우 큰 숫자를 다루어야 할 때가 있습니다. 이럴 때 사용하는 것이 바로 BigInteger 클래스입니다. BigInteger는 임의 길이의 정수를 오버플로우 없이 처리할 수 있도록 지원합니다.

BigInteger를 사용하려면 프로젝트에 System.Numerics 어셈블리를 참조로 추가해야 하며, 실제 타입은 System.Numerics.BigInteger 네임스페이스에 정의되어 있습니다.

BigInteger 구문(Syntax)

BigInteger는 값 형식(struct)으로 선언되어 있으며, 기본 구문은 다음과 같습니다.

[SerializableAttribute]
public struct BigInteger : IFormattable, IComparable,
IComparable<BigInteger>, IEquatable<BigInteger>

BigInteger 사용 예제

다음은 Int64.MaxValue를 제곱하는 예제입니다. 일반 long 타입으로는 절대 표현할 수 없는 값을 손쉽게 계산할 수 있습니다.

BigInteger num = BigInteger.Multiply(Int64.MaxValue, Int64.MaxValue);

또한 new 키워드를 사용해 double과 같은 다른 숫자 형식으로부터 BigInteger 객체를 생성할 수도 있습니다.

BigInteger num = new BigInteger(double.MaxValue);

주요 생성자(Constructor)

BigInteger 구조체는 다양한 데이터 형식으로부터 인스턴스를 생성할 수 있는 여러 생성자를 제공합니다.

번호생성자 및 설명
1BigInteger(Byte[])
바이트 배열에 담긴 값을 사용하여 BigInteger 구조체의 새 인스턴스를 생성합니다.
2BigInteger(Decimal)
Decimal 값을 사용하여 BigInteger 구조체의 새 인스턴스를 생성합니다.
3BigInteger(Double)
배정밀도(double) 부동 소수점 값을 사용하여 BigInteger 구조체의 새 인스턴스를 생성합니다.
4BigInteger(Int32)
32비트 부호 있는 정수(int) 값을 사용하여 BigInteger 구조체의 새 인스턴스를 생성합니다.

이 외에도 BigInteger.Parse() 메서드를 사용하면 문자열로부터 직접 초대형 정수를 만들 수 있으며, 사칙연산 연산자(+, -, *, /)가 모두 오버로딩되어 있어 일반 정수처럼 자연스럽게 사용할 수 있다는 장점이 있습니다.