Conversions de types à virgule flottante
Une valeur float converti en double ou à long double, ou un double converti en long double, n'entraîne aucune modification de la valeur.Une valeur de double convertie en une valeur float est représentée exactement, si possible.La précision peut être annulé si la valeur ne peut pas être représentée exactement.Si le résultat est hors limites, le comportement n'est pas défini.Consultez Limites sur les constantes à virgule flottante pour la plage de types à virgule flottante.
Une valeur flottante est convertie en une valeur intégrale en convertissant d'abord sur long, puis de la valeur de long à la valeur intégrale spécifique.la partie décimale de la valeur flottante est ignorée dans la conversion à long.Si le résultat est toujours trop grand pour être contenu dans long, la conversion est pas défini.
Spécifique à Microsoft
La conversion d'un nombre à virgule flottante de double ou d' long double à un plus petit nombre à virgule flottante, la valeur de la variable en virgule flottante est tronquée du côté de zéro alors un dépassement de capacité se produit.un dépassement de capacité provoque une erreur d'exécution.Notez que le compilateur C Microsoft mappe long double de taper double.
détail de FIN Microsoft
Le tableau suivant répertorie les conversions des types de flottant.
conversions des types à virgule flottante
From |
Pour |
Méthode |
---|---|---|
float |
char |
Converti en long; converti long à char |
float |
short |
Converti en long; converti long à short |
float |
long |
Tronquer à la virgule décimale.Si le résultat est trop grand pour être représenté comme long, le résultat n'est pas défini. |
float |
unsigned short |
Converti en long; converti long à unsigned short |
float |
unsigned long |
Converti en long; converti long à unsigned long |
float |
double |
représentation interne de modification |
float |
long double |
représentation interne de modification |
double |
char |
Converti en float; converti float à char |
double |
short |
Converti en float; converti float à short |
double |
long |
Tronquer à la virgule décimale.Si le résultat est trop grand pour être représenté comme long, le résultat n'est pas défini. |
double |
unsigned short |
Converti en long; converti long à unsigned short |
double |
unsigned long |
Converti en long; converti long à unsigned long |
double |
float |
Représentation sous forme float.si la valeur de double ne peut pas être représentée exactement comme float, la perte de précision se produit.Si la valeur est trop grande pour être représentée comme float, le résultat n'est pas défini. |
long double |
char |
Converti en float; converti float à char |
long double |
short |
Converti en float; converti float à short |
long double |
long |
Tronquer à la virgule décimale.Si le résultat est trop grand pour être représenté comme long, le résultat n'est pas défini. |
long double |
unsigned short |
Converti en long; converti long à unsigned short |
long double |
unsigned long |
Converti en long; converti long à unsigned long |
long double |
float |
Représentation sous forme float.si la valeur de double ne peut pas être représentée exactement comme float, la perte de précision se produit.Si la valeur est trop grande pour être représentée comme float, le résultat n'est pas défini. |
long double |
double |
La valeur de longdouble est traitée comme une double. |
Les conversions de float, de double, ou les valeurs des long double à unsigned long ne sont pas précises si la valeur est convertie est supérieure à la valeur positive maximale de long .