Avec quelle fonction puis je savoir si un nombre (de type double) est "entier "ou "reel" c'est a dire si il n'a que des 0 apres sa virgule ?
exemple 3.00 ou 3.01
Merci
Version imprimable
Avec quelle fonction puis je savoir si un nombre (de type double) est "entier "ou "reel" c'est a dire si il n'a que des 0 apres sa virgule ?
exemple 3.00 ou 3.01
Merci
Je ne pense pas qu'il y ait de méthode fiable. La représentation des nombres à virgule flottante est approximative. un '3' peut très bien être codé '2.999999999', ce qui risque de fausser les résultats.Citation:
Envoyé par LIMODIN
Salut
tu peux utiliser la fonction modf, qui te décompose ton double en 2 parties (entier et décimal). Si décimal <> 0 => réel.
Autre méthode, tu retiens ton entier dans un long, que tu soustrais au double. Si la différence est égale à 0, c'est un entier.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <stdio.h> #include <math.h> int main(void) { double var = 4.00 ; double entier = 0.0, decimal = 0.0 ; decimal = modf(var, &entier) ; if(decimal) printf("Le nombre %f est \"réel\"\n", var) ; else printf("Le nombre %f est \"entier\"\n", var) ; return 0 ; }
A vérifier, car parfois le calcul des doubles est différent d'un compilo à un autre.Code:
1
2
3
4
5
6
7
8
9
10
11
12 #include <stdio.h> #include <math.h> int main(void) { double var = 4.01 ; long varentier = (long)var ; if(var-varentier) printf("Le nombre %f est \"réel\"\n", var) ; else printf("Le nombre %f est \"entier\"\n", var) ; return 0 ; }
Voila
Merci
je vais tester