부동 소수점 형식에서 변환Conversions from Floating-Point Types

double이나 long double로 변환된 float 값 또는 long double로 변환된 double 값은 변경되지 않습니다.A float value converted to a double or long double, or a double converted to a long double, undergoes no change in value. float 값으로 변환된 double 값은 가능할 경우 정확하게 표현됩니다.A double value converted to a float value is represented exactly, if possible. 값을 정확하게 표현할 수 없는 경우 정밀도가 손실될 수 있습니다.Precision may be lost if the value cannot be represented exactly. 결과가 범위를 벗어나면 동작이 정의되지 않습니다.If the result is out of range, the behavior is undefined. 부동 소수점 형식의 범위에 대해서는 부동 소수점 상수에 대한 제한을 참조하세요.See Limits on Floating-Point Constants for the range of floating-point types.

부동 소수점 값은 먼저 long으로 변환된 후 long 값에서 특정 정수 값으로 변환하여 정수 값으로 변환됩니다.A floating value is converted to an integral value by first converting to a long, then from the long value to the specific integral value. long으로 변환할 때 부동 소수점 값의 소수 부분이 삭제됩니다.The decimal portion of the floating value is discarded in the conversion to a long. 결과가 커서 long에 맞지 않을 경우 변환 결과가 정의되지 않습니다.If the result is still too large to fit into a long, the result of the conversion is undefined.

Microsoft 전용Microsoft Specific

double 또는 long double 부동 소수점 숫자를 작은 부동 소수점 숫자로 변환할 때 언더플로가 발생하면 부동 소수점 변수의 값이 0으로 잘립니다.When converting a double or long double floating-point number to a smaller floating-point number, the value of the floating-point variable is truncated toward zero when an underflow occurs. 오버플로가 발생하면 런타임 오류가 생성됩니다.An overflow causes a run-time error. Microsoft C 컴파일러가 long doubledouble 형식에 매핑합니다.Note that the Microsoft C compiler maps long double to type double.

Microsoft 전용 종료END Microsoft Specific

다음 표에서는 부동 형식의 변환을 요약합니다.The following table summarizes conversions from floating types.

부동 소수점 형식에서 변환Conversions from Floating-Point Types

시작From To 메서드Method
floatfloat char long으로 변환, longchar로 변환Convert to long; convert long to char
floatfloat shortshort long으로 변환, longshort로 변환Convert to long; convert long to short
floatfloat longlong 소수점에서 자릅니다.Truncate at decimal point. 결과가 커서 long으로 나타낼 수 없는 경우 결과가 정의되지 않습니다.If result is too large to be represented as long, result is undefined.
floatfloat unsigned shortunsigned short long으로 변환, longunsigned short로 변환Convert to long; convert long to unsigned short
floatfloat unsigned long long으로 변환, longunsigned long으로 변환Convert to long; convert long to unsigned long
floatfloat doubledouble 내부 표현 변경Change internal representation
floatfloat long double 내부 표현 변경Change internal representation
doubledouble char float로 변환, floatchar로 변환Convert to float; convert float to char
doubledouble shortshort float로 변환, floatshort로 변환Convert to float; convert float to short
doubledouble longlong 소수점에서 자릅니다.Truncate at decimal point. 결과가 커서 long으로 나타낼 수 없는 경우 결과가 정의되지 않습니다.If result is too large to be represented as long, result is undefined.
doubledouble unsigned shortunsigned short long으로 변환, longunsigned short로 변환Convert to long; convert long to unsigned short
doubledouble unsigned long long으로 변환, longunsigned long으로 변환Convert to long; convert long to unsigned long
doubledouble floatfloat float로 나타냅니다.Represent as a float. double 값을 float로 정확히 나타낼 수 없으면 정밀도가 손실됩니다.If double value cannot be represented exactly as float, loss of precision occurs. 갓이 커서 float로 나타낼 수 없으면 결과가 정의되지 않습니다.If value is too large to be represented as float, the result is undefined.
long double char float로 변환, floatchar로 변환Convert to float; convert float to char
long double shortshort float로 변환, floatshort로 변환Convert to float; convert float to short
long double longlong 소수점에서 자릅니다.Truncate at decimal point. 결과가 커서 long으로 나타낼 수 없는 경우 결과가 정의되지 않습니다.If result is too large to be represented as long, result is undefined.
long double unsigned shortunsigned short long으로 변환, longunsigned short로 변환Convert to long; convert long to unsigned short
long double unsigned long long으로 변환, longunsigned long으로 변환Convert to long; convert long to unsigned long
long double floatfloat float로 나타냅니다.Represent as a float. double 값을 float로 정확히 나타낼 수 없으면 정밀도가 손실됩니다.If double value cannot be represented exactly as float, loss of precision occurs. 갓이 커서 float로 나타낼 수 없으면 결과가 정의되지 않습니다.If value is too large to be represented as float, the result is undefined.
long double doubledouble long double 값은 double로 처리됩니다.The long double value is treated as double.

변환되는 값이 최대 양수 long 값보다 클 경우 float, double 또는 long double 값에서 unsigned long으로 변환하는 것은 적절하지 않습니다.Conversions from float, double, or long double values to unsigned long are not accurate if the value being converted is larger than the maximum positive long value.

참고 항목See Also

할당 변환Assignment Conversions