다음을 통해 공유


.NET의 숫자

.NET은 다음과 같이 다양한 숫자 정수 및 부동 소수점 기본 형식을 제공합니다.

정수 형식

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

부인 정수 형식

유형 크기(바이트) 최소값 최대값
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

부호 없는 정수 형식

유형 크기(바이트) 최소값 최대값
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에는 다음과 같은 부동 소수점 형식이 포함됩니다.

유형 크기(바이트) 대략적 범위 원시적인? 비고
System.Half 2 ±65504 아니오 .NET 5에 도입
System.Single 4 ±3.4 × 1038
System.Double 8 (여덟) ±1.7 × 10308
System.Decimal 16 ±7.9228 x 1028 아니오

Half, Single, 및 Double 형식은 수가 아님과 무한대를 나타내는 특수 값을 지원합니다. 예를 들어 형식은 Double 다음 값을 Double.NaNDouble.NegativeInfinityDouble.PositiveInfinity제공합니다. Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity, 및 Double.IsNegativeInfinity 메서드를 사용하여 이러한 특수 값을 테스트합니다.

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

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

Double, Single, 및 Half 형식은 본질적으로 정확하지 않은 값(예: 두 별 사이의 거리)과 높은 정밀도와 작은 반올림 오류가 필요하지 않은 애플리케이션에서 사용되도록 설계되었습니다. System.Decimal 정밀도가 더 높고 반올림 오류를 최소화해야 하는 경우 형식을 사용합니다.

비고

Decimal 형식은 반올림의 필요성을 없애지 않습니다. 대신 반올림으로 인한 오류를 최소화합니다.

콤플렉스

구조체는 System.Numerics.Complex 복소수, 즉 실수 부분과 허수 부분이 있는 숫자를 나타냅니다. 산술, 비교, 같음, 명시적 및 암시적 변환 연산자뿐만 아니라 수학, 대수 및 삼각 메서드의 표준 집합을 지원합니다.

SIMD 사용 형식

네임스페이스에는 System.Numerics .NET SIMD 사용 형식 집합이 포함됩니다. SIMD(단일 명령 다중 데이터) 작업은 하드웨어 수준에서 병렬 처리할 수 있습니다. 이는 수학, 과학 및 그래픽 앱에서 흔히 볼 수 있는 벡터화된 계산의 처리량을 증가합니다.

.NET SIMD 사용 형식에는 다음이 포함됩니다.

  • Vector2, Vector3Vector4 형식은 각각 2, 3, 4개의 Single 값을 가진 벡터를 나타냅니다.

  • 3x2 행렬을 나타내고 Matrix3x24x4 행렬을 나타내는 두 개의 행렬 형식Matrix4x4입니다.

  • 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 가속 숫자 형식 사용을 참조하세요.

참고하십시오