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
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.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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager