.NET의 숫자Numerics in .NET

.NET에서는 다양한 숫자 정수 및 부동 소수점 기본 형식과 System.Numerics.BigInteger(이론적 상한 또는 하한이 없는 정수 형식), System.Numerics.Complex(복소수) 및 System.Numerics 네임스페이스의 SIMD 사용 형식 집합을 제공합니다..NET provides a range of numeric integer and floating-point primitives, as well as System.Numerics.BigInteger, which is an integral type with no theoretical upper or lower bound, System.Numerics.Complex, which represents complex numbers, and a set of SIMD-enabled types in the System.Numerics namespace.

정수 형식Integer types

.NET은 다음 표에 나열된 부호 있는/부호 없는 8비트, 16비트, 32비트 및 64비트 정수 형식을 모두 지원합니다..NET supports both signed and unsigned 8-, 16-, 32-, and 64-bit integer types, which are listed in the following table:

형식Type 부호 있음/부호 없음Signed/Unsigned 크기(바이트)Size (in bytes) 최소값Minimum value 최대값Maximum value
System.Byte 부호 없음Unsigned 11 00 255255
System.Int16 서명Signed 22 -32,768-32,768 32,76732,767
System.Int32 서명Signed 44 -2,147,483,648-2,147,483,648 2,147,483,6472,147,483,647
System.Int64 서명Signed 88 -9,223,372,036,854,775,808-9,223,372,036,854,775,808 9,223,372,036,854,775,8079,223,372,036,854,775,807
System.SByte 서명Signed 11 -128-128 127127
System.UInt16 부호 없음Unsigned 22 00 65,53565,535
System.UInt32 부호 없음Unsigned 44 00 4,294,967,2954,294,967,295
System.UInt64 부호 없음Unsigned 88 00 18,446,744,073,709,551,61518,446,744,073,709,551,615

각 정수 형식은 표준 산술 연산자 집합을 지원합니다.Each integer type supports a set of standard arithmetic operators. System.Math 클래스는 광범위한 수학 함수 집합에 대한 메서드를 제공합니다.The System.Math class provides methods for a broader set of mathematical functions.

System.BitConverter 클래스를 사용하여 정수 값의 개별 비트를 사용할 수도 있습니다.You can also work with the individual bits in an integer value by using the System.BitConverter class.

참고

부호 없는 정수 형식은 CLS 규격이 아닙니다.The unsigned integer types are not CLS-compliant. 자세한 내용은 언어 독립성 및 언어 독립적 구성 요소을 참조하십시오.For more information, see Language Independence and Language-Independent Components.

BigIntegerBigInteger

System.Numerics.BigInteger 구조체는 이론상 값에 상한이나 하한이 없는 임의로 큰 정수를 나타내는 변경할 수 없는 형식입니다.The System.Numerics.BigInteger structure is an immutable type that represents an arbitrarily large integer whose value in theory has no upper or lower bounds. BigInteger 형식의 메서드는 기타 정수 계열 형식의 메서드와 매우 유사합니다.The methods of the BigInteger type closely parallel those of the other integral types.

부동 소수점 형식Floating-point types

.NET에는 다음 표에 나열된 세 가지 기본 부동 소수점 형식이 포함되어 있습니다..NET includes three primitive floating-point types, which are listed in the following table:

형식Type 크기(바이트)Size (in bytes) 근사 범위Approximate range 전체 자릿수Precision
System.Single 44 ±1.5 x 10−45 ~ ±3.4 x 1038±1.5 x 10−45 to ±3.4 x 1038 ~6-9개 자릿수~6-9 digits
System.Double 88 ±5.0 × 10−324 ~ ±1.7 × 10308±5.0 × 10−324 to ±1.7 × 10308 ~15-17개 자릿수~15-17 digits
System.Decimal 1616 ±1.0 x 10-28 ~ ±7.9228 x 1028±1.0 x 10-28 to ±7.9228 x 1028 28-29개의 자릿수28-29 digits

SingleDouble 형식은 숫자가 아니고 무한대임을 나타내는 특수 값을 지원합니다.Both Single and Double types support special values that represent not-a-number and infinity. 예를 들어 Double 형식은 Double.NaN, Double.NegativeInfinityDouble.PositiveInfinity와 같은 값을 제공합니다.For example, the Double type provides the following values: Double.NaN, Double.NegativeInfinity, and Double.PositiveInfinity. Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinityDouble.IsNegativeInfinity 메서드를 사용하여 이러한 특수 값을 테스트합니다.You use the Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity, and Double.IsNegativeInfinity methods to test for these special values.

각 부동 소수점 형식은 표준 산술 연산자 집합을 지원합니다.Each floating-point type supports a set of standard arithmetic operators. System.Math 클래스는 광범위한 수학 함수 집합에 대한 메서드를 제공합니다.The System.Math class provides methods for a broader set of mathematical functions. .NET Core 2.0 이상에는 Single 형식의 인수를 허용하는 메서드를 제공하는 System.MathF 클래스가 포함되어 있습니다..NET Core 2.0 and later includes the System.MathF class, which provides methods that accept arguments of the Single type.

System.BitConverter 클래스를 사용하여 DoubleSingle 값의 개별 비트를 사용할 수도 있습니다.You can also work with the individual bits in Double and Single values by using the System.BitConverter class. System.Decimal 구조체에는 10진수 값의 개별 비트를 사용하기 위한 고유한 메서드인 Decimal.GetBitsDecimal(Int32[])와 몇몇 추가적인 수치 연산을 수행하기 위한 고유한 메서드 집합이 있습니다.The System.Decimal structure has its own methods, Decimal.GetBits and Decimal(Int32[]), for working with a decimal value's individual bits, as well as its own set of methods for performing some additional mathematical operations.

DoubleSingle 형식은 기본적으로 정확하지 않은 값(예: 두 별 사이의 거리) 및 정밀도가 높고 반올림 오류가 적을 필요 없는 애플리케이션에 사용해야 합니다.The Double and Single types are intended to be used for values that, by their nature, are imprecise (for example, the distance between two stars) and for applications in which a high degree of precision and small rounding error is not required. 정밀도가 더 높아야 하고 반올림 오류가 최소화되어야 하는 경우에는 System.Decimal 형식을 사용하세요.Use the System.Decimal type for cases in which greater precision is required and rounding errors should be minimized.

참고

Decimal 형식을 사용하면 반올림이 필요하지 않습니다.The Decimal type doesn't eliminate the need for rounding. 오히려 반올림으로 인한 오류를 최소화합니다.Rather, it minimizes errors due to rounding.

복합Complex

System.Numerics.Complex 구조체는 실수 부분과 허수 부분이 포함된 숫자인 복소수를 나타냅니다.The System.Numerics.Complex structure represents a complex number, that is, a number with a real number part and an imaginary number part. 이 형식은 산술, 비교, 같음, 명시적 및 암시적 변환 연산자의 표준 집합과 수치, 대수 및 삼각 메서드를 지원합니다.It supports a standard set of arithmetic, comparison, equality, explicit and implicit conversion operators, as well as mathematical, algebraic, and trigonometric methods.

SIMD 사용 형식SIMD-enabled types

System.Numerics 네임스페이스에는 .NET SIMD 사용 형식 집합이 포함됩니다.The System.Numerics namespace includes a set of .NET SIMD-enabled types. SIMD(Single Instruction Multiple Data) 작업은 하드웨어 수준에서 병렬 처리할 수 있습니다.SIMD (Single Instruction Multiple Data) operations can be parallelized at the hardware level. 이를 통해 수학, 과학 및 그래픽 앱에서 공통적인 벡터화된 계산의 처리량이 증가합니다.That increases the throughput of the vectorized computations, which are common in mathematical, scientific, and graphics apps.

.NET SIMD 사용 형식은 다음과 같습니다.The .NET SIMD-enabled types include the following:

  • Vector2, Vector3Vector4 형식은 2, 3 및 4 Single 값이 있는 벡터를 나타냅니다.The Vector2, Vector3, and Vector4 types, which represent vectors with 2, 3, and 4 Single values.

  • 두 가지 행렬 형식이 있습니다. Matrix3x2는 3x2 행렬을 나타내고 Matrix4x4는 4x4 행렬을 나타냅니다.Two matrix types, Matrix3x2, which represents a 3x2 matrix, and Matrix4x4, which represents a 4x4 matrix.

  • Plane 형식은 평면을 3차원 공간으로 나타냅니다.The Plane type, which represents a plane in three-dimensional space.

  • Quaternion 형식은 3차원 물리적 회전을 인코드하는 데 사용되는 벡터를 나타냅니다.The Quaternion type, which represents a vector that is used to encode three-dimensional physical rotations.

  • Vector<T> 형식은 지정된 숫자 형식의 벡터를 나타내고 SIMD 지원을 활용하는 광범위한 연산자 집합을 제공합니다.The Vector<T> type, which represents a vector of a specified numeric type and provides a broad set of operators that benefit from SIMD support. Vector<T> 인스턴스 개수는 고정되지만 해당 Vector<T>.Count 값은 코드가 실행되는 머신의 CPU에 따라 다릅니다.The count of a Vector<T> instance is fixed, but its value Vector<T>.Count depends on the CPU of the machine, on which code is executed.

    참고

    Vector<T> 형식은 .NET Framework에 포함되지 않습니다.The Vector<T> type is not included into the .NET Framework. 이 형식에 액세스하려면 System.Numerics.Vectors NuGet 패키지를 설치해야 합니다.You must install the System.Numerics.Vectors NuGet package to get access to this type.

SIMD 사용 형식은 SIMD 미사용 하드웨어 또는 JIT 컴파일러와 함께 사용할 수 있는 방식으로 구현됩니다.The SIMD-enabled types are implemented in such a way that they can be used with non-SIMD-enabled hardware or JIT compilers. SIMD 지침을 활용하려면 .NET Core 및 .NET Framework 4.6 이상 버전에 포함된 RyuJIT 컴파일러를 사용하는 런타임을 통해 64비트 앱을 실행해야 합니다.To take advantage of SIMD instructions, your 64-bit apps must be run by the runtime that uses the RyuJIT compiler, which is included in .NET Core and in the .NET Framework 4.6 and later versions. 64비트 프로세서를 대상으로 지정할 때 SIMD 지원을 추가합니다.It adds SIMD support when targeting 64-bit processors.

자세한 내용은 SIMD 가속 숫자 형식 사용을 참조하세요.For more information, see Use SIMD-accelerated numeric types.

참조See also