Conversioni dai tipi a virgola mobileConversions from Floating-Point Types

Quando un valore float viene convertito in double o long double o un valore double viene convertito in long double non si verifica alcun cambiamento del valore.A float value converted to a double or long double, or a double converted to a long double, undergoes no change in value. Se possibile i valori double convertiti in valori float vengono rappresentati esattamente.A double value converted to a float value is represented exactly, if possible. Se il valore non può essere rappresentato esattamente, la precisione non è mantenuta.Precision may be lost if the value cannot be represented exactly. Se il risultato non è incluso nell'intervallo, il comportamento non è definito.If the result is out of range, the behavior is undefined. Per l'intervallo dei tipi a virgola mobile vedere Limiti sulle costanti a virgola mobile.See Limits on Floating-Point Constants for the range of floating-point types.

Per convertire un valore a virgola mobile in un valore integrale, è necessario prima convertirlo in long, quindi è possibile convertirlo da valore long al valore integrale specifico.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. La parte decimale del valore a virgola mobile viene eliminata con la conversione a long.The decimal portion of the floating value is discarded in the conversion to a long. Se il risultato ha ancora una dimensione troppo grande per un tipo long il risultato della conversione è indefinito.If the result is still too large to fit into a long, the result of the conversion is undefined.

Sezione specifica MicrosoftMicrosoft Specific

Quando un numero a virgola mobile double o long double viene convertito in un numero a virgola mobile più breve, il valore della variabile a virgola mobile viene troncato verso lo zero in caso di underflow.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. L'overflow provoca un errore di runtime.An overflow causes a run-time error. Si noti che il compilatore C Microsoft esegue il mapping di long double sul tipo double.Note that the Microsoft C compiler maps long double to type double.

Fine sezione specifica MicrosoftEND Microsoft Specific

Nella tabella seguente sono riepilogate le conversioni dai tipi a virgola mobile.The following table summarizes conversions from floating types.

Conversioni dai tipi a virgola mobileConversions from Floating-Point Types

DaFrom PerTo MetodoMethod
floatfloat char Convertire a long; convertire long a charConvert to long; convert long to char
floatfloat shortshort Convertire a long; convertire long a shortConvert to long; convert long to short
floatfloat longlong Troncare in corrispondenza del separatore decimale.Truncate at decimal point. Se il valore risultante è troppo grande per essere rappresentato come long il risultato è indefinito.If result is too large to be represented as long, result is undefined.
floatfloat unsigned shortunsigned short Convertire a long; convertire long a unsigned shortConvert to long; convert long to unsigned short
floatfloat unsigned long Convertire a long; convertire long a unsigned longConvert to long; convert long to unsigned long
floatfloat doubledouble Modificare la rappresentazione internaChange internal representation
floatfloat long double Modificare la rappresentazione internaChange internal representation
doubledouble char Convertire a float; convertire float a charConvert to float; convert float to char
doubledouble shortshort Convertire a float; convertire float a shortConvert to float; convert float to short
doubledouble longlong Troncare in corrispondenza del separatore decimale.Truncate at decimal point. Se il valore risultante è troppo grande per essere rappresentato come long il risultato è indefinito.If result is too large to be represented as long, result is undefined.
doubledouble unsigned shortunsigned short Convertire a long; convertire long a unsigned shortConvert to long; convert long to unsigned short
doubledouble unsigned long Convertire a long; convertire long a unsigned longConvert to long; convert long to unsigned long
doubledouble floatfloat Rappresentare come float.Represent as a float. Se il valore double non può essere rappresentato esattamente come float si verifica una perdita di precisione.If double value cannot be represented exactly as float, loss of precision occurs. Se il valore è troppo grande per essere rappresentato come float, il risultato è indefinito.If value is too large to be represented as float, the result is undefined.
long double char Convertire a float; convertire float a charConvert to float; convert float to char
long double shortshort Convertire a float; convertire float a shortConvert to float; convert float to short
long double longlong Troncare in corrispondenza del separatore decimale.Truncate at decimal point. Se il valore risultante è troppo grande per essere rappresentato come long il risultato è indefinito.If result is too large to be represented as long, result is undefined.
long double unsigned shortunsigned short Convertire a long; convertire long a unsigned shortConvert to long; convert long to unsigned short
long double unsigned long Convertire a long; convertire long a unsigned longConvert to long; convert long to unsigned long
long double floatfloat Rappresentare come float.Represent as a float. Se il valore double non può essere rappresentato esattamente come float si verifica una perdita di precisione.If double value cannot be represented exactly as float, loss of precision occurs. Se il valore è troppo grande per essere rappresentato come float, il risultato è indefinito.If value is too large to be represented as float, the result is undefined.
long double doubledouble Il valore long double viene considerato come double.The long double value is treated as double.

Le conversioni da valori float, double o long double a unsigned long non sono accurate se il valore convertito è superiore al valore long massimo positivo.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.

Vedere ancheSee Also

Conversioni di assegnazioneAssignment Conversions