.NET의 숫자

.NET에서는 다양한 숫자 정수와 부동 소수점 기본 형식뿐 아니라 다음 항목도 제공합니다.

정수 형식

.NET은 다음 표에 나열된 8비트, 16비트, 32비트, 64비트 및 128비트의 부호 있는 정수 형식과 부호 없는 정수 형식을 모두 지원합니다.

부호 있는 정수 형식

Type 크기(바이트) 최솟값 최댓값
System.Int16 2 -32,768 32,767
System.Int32 4 -2,147,483,648 2,147,483,647
System.Int64 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807
System.Int128 16 −170,141,183,460,469,231,731,687,303,715,884,105,728 170,141,183,460,469,231,731,687,303,715,884,105,727
System.SByte 1 -128 127
System.IntPtr(32비트 프로세스) 4 -2,147,483,648 2,147,483,647
System.IntPtr(64비트 프로세스) 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

부호 없는 정수 형식

Type 크기(바이트) 최솟값 최댓값
System.Byte 1 0 255
System.UInt16 2 0 65,535
System.UInt32 4 0 4,294,967,295
System.UInt64 8 0 18,446,744,073,709,551,615
System.UInt128 16 0 340,282,366,920,938,463,463,374,607,431,768,211,455
System.UIntPtr(32비트 프로세스) 4 0 4,294,967,295
System.UIntPtr(64비트 프로세스) 8 0 18,446,744,073,709,551,615

각 정수 형식은 표준 산술 연산자 집합을 지원합니다. System.Math 클래스는 광범위한 수학 함수 집합에 대한 메서드를 제공합니다.

System.BitConverter 클래스를 사용하여 정수 값의 개별 비트를 사용할 수도 있습니다.

참고 항목

부호 없는 정수 형식은 CLS 규격이 아닙니다. 자세한 내용은 언어 독립성 및 언어 독립적 구성 요소를 참조하세요.

BigInteger

System.Numerics.BigInteger 구조체는 이론상 값에 상한이나 하한이 없는 임의로 큰 정수를 나타내는 변경할 수 없는 형식입니다. BigInteger 형식의 메서드는 기타 정수 계열 형식의 메서드와 매우 유사합니다.

부동 소수점 형식

.NET에는 다음과 같은 부동 소수점 형식이 포함되어 있습니다.

Type 크기(바이트) 근사 범위 기본 유형? 주의
System.Half 2 ±65504 아니요 .NET 5에 도입
System.Single 4 ±3.4 x 1038
System.Double 8 ±1.7 × 10308
System.Decimal 16 ±7.9228 x 1028 아니요

Half, Single, Double 형식은 숫자가 아니고 무한대임을 나타내는 특수 값을 지원합니다. 예를 들어 Double 형식은 Double.NaN, Double.NegativeInfinityDouble.PositiveInfinity와 같은 값을 제공합니다. Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinityDouble.IsNegativeInfinity 메서드를 사용하여 이러한 특수 값을 테스트합니다.

각 부동 소수점 형식은 표준 산술 연산자 집합을 지원합니다. System.Math 클래스는 광범위한 수학 함수 집합에 대한 메서드를 제공합니다. .NET Core 2.0 이상에는 Single 형식의 인수를 허용하는 메서드를 제공하는 System.MathF 클래스가 포함되어 있습니다.

System.BitConverter 클래스를 사용하여 Double, Single, Half 값의 개별 비트를 사용할 수도 있습니다. System.Decimal 구조체에는 10진수 값의 개별 비트를 사용하기 위한 고유한 메서드인 Decimal.GetBitsDecimal(Int32[])와 몇몇 추가적인 수치 연산을 수행하기 위한 고유한 메서드 집합이 있습니다.

Double, Single, Half 형식은 기본적으로 정확하지 않은 값(예: 두 별 사이의 거리) 및 정밀도가 높고 반올림 오차가 적을 필요 없는 애플리케이션에 사용해야 합니다. 정밀도가 더 높아야 하고 반올림 오류가 최소화되어야 하는 경우에는 System.Decimal 형식을 사용하세요.

참고 항목

Decimal 형식을 사용하면 반올림이 필요하지 않습니다. 오히려 반올림으로 인한 오류를 최소화합니다.

복합

System.Numerics.Complex 구조체는 실수 부분과 허수 부분이 포함된 숫자인 복소수를 나타냅니다. 이 형식은 산술, 비교, 같음, 명시적 및 암시적 변환 연산자의 표준 집합과 수치, 대수 및 삼각 메서드를 지원합니다.

SIMD 사용 형식

System.Numerics 네임스페이스에는 .NET SIMD 사용 형식 집합이 포함됩니다. SIMD(Single Instruction Multiple Data) 작업은 하드웨어 수준에서 병렬 처리할 수 있습니다. 이를 통해 수학, 과학 및 그래픽 앱에서 공통적인 벡터화된 계산의 처리량이 증가합니다.

.NET SIMD 사용 형식은 다음과 같습니다.

  • Vector2, Vector3Vector4 형식은 2, 3 및 4 Single 값이 있는 벡터를 나타냅니다.

  • 두 가지 행렬 형식이 있습니다. Matrix3x2는 3x2 행렬을 나타내고 Matrix4x4는 4x4 행렬을 나타냅니다.

  • Plane 형식은 평면을 3차원 공간으로 나타냅니다.

  • Quaternion 형식은 3차원 물리적 회전을 인코드하는 데 사용되는 벡터를 나타냅니다.

  • Vector<T> 형식은 지정된 숫자 형식의 벡터를 나타내고 SIMD 지원을 활용하는 광범위한 연산자 집합을 제공합니다. Vector<T> 인스턴스 개수는 고정되지만 해당 Vector<T>.Count 값은 코드가 실행되는 머신의 CPU에 따라 다릅니다.

    참고 항목

    Vector<T> 형식은 .NET Core 및 .NET 5 이상에 포함되지만 .NET Framework에는 포함되지 않습니다. .NET Framework를 사용하는 경우 System.Numerics.Vectors NuGet 패키지를 설치하여 이 형식에 대한 액세스 권한을 얻습니다.

SIMD 사용 형식은 SIMD 미사용 하드웨어 또는 JIT 컴파일러와 함께 사용할 수 있는 방식으로 구현됩니다. SIMD 지침을 활용하려면 .NET Core 및 .NET Framework 4.6 이상 버전에 포함된 RyuJIT 컴파일러를 사용하는 런타임을 통해 64비트 앱을 실행해야 합니다. 64비트 프로세서를 대상으로 지정할 때 SIMD 지원을 추가합니다.

자세한 내용은 SIMD 가속 숫자 형식 사용을 참조하세요.

참고 항목