La représentation des nombres réels qui sont, du point de vue de l'informatique, des nombres à virgule flottante, est bien sur également possible en C, et c'est pourquoi je vais maintenant vous en parler.

Définition des nombres à virgule flottante

Le type réel standard en virgule flottante à simple précision est désigné par l'identificateur float. Le type double correspond au format des réels a virgule flottante en double précision.

Les réels sont stockés sous la forme classique (mantisse/exposant) mais, comme pour les entiers, les représentations internes des types peuvent légèrement varier selon l'environnement et la machine. Quelque soit la façon dont le compilateur traite ces objets, il met à la disposition du programmeur trois niveaux de précision correspondant aux trois types :

TypeTaille minimaleEtendueDescription
float4 octet3.4e-38 à 3.4e+38Réels a virgule flottante simple précision
double8 octets1.7e-308 à 1.7e+308Réels a virgule flottante double précision
long double10 octets3.4e-4932 à 1.1e+4932Réels a virgule flottante quadruple précision

Les valeurs réelles peuvent s'écrire indifféremment sous forme décimale ou en notation scientifique.

La forme décimale utilise le point comme séparateur décimal, avec au moins un chiffre avant ou après le point, et éventuellement un signe + ou -, le + étant facultatif. Par exemple : 1.23 ou -.36

La forme scientifique d'un numérique se compose d'une mantisse pouvant apparaître sous forme entière ou décimale, et d'un exposant entier. Par exemple : 1e3 ou -0.1e-1

Le seul opérateur non applicable sur un réel est l'opérateur %. Les autres (+, -, *, /) sont toujours utilisables. Pour que la valeur retournee par une expression soit reele, il suffit que l'un de ses operandes soit reel.

La librairie math.h

Les operateurs permettent d'effectuer des calculs de base, mais pour realiser des calculs plus complexes, comme une racine carrée ou un sinus, il faut recourir aux fonctions de la librairie math.h. Voici la plus grande partie de ces fonctions :

FonctionSyntaxeDescription
absint abs(int x);Retourne la valeur absolue d'un entier.
labslong labs(long x)Retourne la valeur absolue d'un entier long.
fabsdouble fabs(double x)Retourne la valeur absolue d'un réel.
ceildouble ceil(double x)Arrondi par exces (retourne le plus petit entier supérieu ou egal à x).
floordouble floor(double x)Arrondi par defaut (retourne le plus petit entier inférieur ou egal à x).
sindouble sin(double x)Sinus d'uns valeur en radian (intervalle -1 à 1).
cosdouble cos(double x)Cosinus d'uns valeur en radian (intervalle -1 à 1).
tandouble tan(double x)Tangente d'uns valeur en radian.
expdouble exp(double x)Calcule e^x.
logdouble log(double x)Logarithme népérien de x.
log10double log10(double x)Logarithme decimal de .x
fmoddouble fmod(double x, double y)Modulo (reste de la division de x par y).
powdouble pow(double x, double y)Puissance (x^y).
sqrtdouble sqrt(double x)Racine carrée de x.



Dernière révision :
Date de Création : 18 mars 1998
Copyright ©
Mathieu ARNOLD 1998