부동 소수점 숫자 형식(C# 참조)Floating-point numeric types (C# reference)

부동 소수점 형식단순 형식의 하위 집합이며 리터럴을 사용하여 초기화할 수 있습니다.The floating-point types are a subset of the simple types and can be initialized with literals. 모든 부동 소수점 형식도 값 형식입니다.All floating-point types are also value types. 모든 부동 소수점 숫자 형식은 산술, 비교 및 같음 연산자를 지원합니다.All floating-point numeric types support arithmetic, comparison, and equality operators.

부동 소수점 형식의 특성Characteristics of the floating-point types

C#은 다음과 같은 미리 정의된 부동 소수점 형식을 지원합니다.C# supports the following predefined floating-point types:

C# 형식/키워드C# type/keyword 근사 범위Approximate range 전체 자릿수Precision .NET 형식.NET type
float ±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.Single
double ±5.0 × 10−324 ~ ±1.7 × 10308±5.0 × 10−324 to ±1.7 × 10308 ~15-17개 자릿수~15-17 digits System.Double
decimal ±1.0 x 10-28 ~ ±7.9228 x 1028±1.0 x 10-28 to ±7.9228 x 1028 28-29개의 자릿수28-29 digits System.Decimal

이전 표에서 맨 왼쪽 열의 각 C# 형식 키워드는 해당하는 .NET 형식의 별칭입니다.In the preceding table, each C# type keyword from the leftmost column is an alias for the corresponding .NET type. 서로 교환하여 사용할 수 있습니다.They are interchangeable. 예를 들어 다음 선언은 동일한 형식의 변수를 선언합니다.For example, the following declarations declare variables of the same type:

double a = 12.3;
System.Double b = 12.3;

각 부동 소수점 형식의 기본값은 0입니다.The default value of each floating-point type is zero, 0. 각 부동 소수점 형식에는 해당 형식의 최소 및 최대 유한값을 제공하는 MinValueMaxValue 상수가 있습니다.Each of the floating-point types has the MinValue and MaxValue constants that provide the minimum and maximum finite value of that type. 또한 floatdouble 형식은 숫자가 아닌 무한 값을 나타내는 상수를 제공합니다.The float and double types also provide constants that represent not-a-number and infinity values. 예를 들어 double 형식은 Double.NaN, Double.NegativeInfinityDouble.PositiveInfinity와 같은 상수를 제공합니다.For example, the double type provides the following constants: Double.NaN, Double.NegativeInfinity, and Double.PositiveInfinity.

decimal 형식은 floatdouble보다 정밀도가 높고 범위가 작으므로 재무 및 통화 계산에 적합합니다.Because the decimal type has more precision and a smaller range than both float and double, it's appropriate for financial and monetary calculations.

식에서 정수 형식과 부동 소수점 형식을 혼합할 수 있습니다.You can mix integral types and floating-point types in an expression. 이 경우 정수 형식이 부동 소수점 형식으로 변환됩니다.In this case, the integral types are converted to floating-point types. 식의 계산은 다음 규칙에 따라 수행됩니다.The evaluation of the expression is performed according to the following rules:

  • 부동 소수점 형식 중 하나가 double인 경우 식은 관계형 비교 및 같음에 대한 비교에서 double 또는 bool로 계산됩니다.If one of the floating-point types is double, the expression evaluates to double, or to bool in relational comparisons or comparisons for equality.
  • 식에 double 형식이 없는 경우 식은 같음에 대한 관계형 비교 또는 비교에서 float 또는 bool로 계산됩니다.If there is no double type in the expression, the expression evaluates to float, or to bool in relational comparisons or comparisons for equality.

부동 소수점 식에는 다음과 같은 값 집합이 포함될 수 있습니다.A floating-point expression can contain the following sets of values:

  • 양수 및 음수 0Positive and negative zero
  • 양수 및 음수 무한대Positive and negative infinity
  • NaN(Not-a-Number) 값Not-a-Number value (NaN)
  • 한정된 0이 아닌 값의 집합The finite set of nonzero values

이러한 값에 대한 자세한 내용은 IEEE 웹 사이트에서 제공되는 이진 부동 소수점 연산에 대한 IEEE 표준을 참조하세요.For more information about these values, see IEEE Standard for Binary Floating-Point Arithmetic, available on the IEEE website.

표준 숫자 서식 문자열 또는 사용자 지정 숫자 서식 문자열을 사용하여 부동 소수점 값의 형식을 지정할 수 있습니다.You can use either standard numeric format strings or custom numeric format strings to format a floating-point value.

부동 소수점 리터럴Floating-point literals

기본적으로 대입 연산자 오른쪽의 부동 소수점 숫자 리터럴은 double로 처리됩니다.By default, a floating-point numeric literal on the right side of the assignment operator is treated as double. 접미사를 사용하여 부동 소수점 또는 정수 리터럴을 특정 형식으로 변환할 수 있습니다.You can use suffixes to convert a floating-point or integral literal to a specific type:

  • d 또는 D 접미사는 리터럴을 double로 변환합니다.The d or D suffix converts a literal to a double.
  • f 또는 F 접미사는 리터럴을 float로 변환합니다.The f or F suffix converts a literal to a float.
  • m 또는 M 접미사는 리터럴을 decimal로 변환합니다.The m or M suffix converts a literal to a decimal.

다음 예제는 각 접미사를 보여줍니다.The following examples show each suffix:

double d = 3D;
d = 4d;
float f = 3.5F;
f = 5.4f;
decimal myMoney = 300.5m;
myMoney = 400.75M;

변환Conversions

float 값의 범위는 double의 적절한 하위 집합이고 float에서 double까지의 정밀도 손실이 없으므로 float에서 double로의 암시적 변환(확대 변환이라고 함)이 있습니다.There's an implicit conversion (called a widening conversion) from float to double because the range of float values is a proper subset of double and there is no loss of precision from float to double.

암시적 변환이 소스 유형에서 대상 유형으로 정의되지 않은 경우 명시적 캐스트를 사용하여 하나의 부동 소수점 형식을 다른 부동 소수점 형식으로 변환해야 합니다.You must use an explicit cast to convert one floating-point type to another floating-point type when an implicit conversion isn't defined from the source type to the destination type. 이를 축소 변환이라고 합니다.This is called a narrowing conversion. 변환이 데이터 손실을 초래할 수 있기 때문에 명시적인 사례가 필요합니다.The explicit case is required because the conversion can result in data loss. decimal 유형은 float 또는 double보다 더 높은 정밀도를 가지므로 다른 부동 소수점 형식과 decimal 형식 간의 암시적 변환은 없습니다.There's no implicit conversion between other floating-point types and the decimal type because the decimal type has greater precision than either float or double.

암시적 숫자 변환에 대한 자세한 내용은 암시적 숫자 변환 표를 참조하세요.For more information about implicit numeric conversions, see Implicit Numeric Conversions Table.

명시적 숫자 변환에 대한 자세한 내용은 명시적 숫자 변환 표를 참조하세요.For more information about explicit numeric conversions, see Explicit Numeric Conversions Table.

참고 항목See also