Comment savoir si un float est entier? Lang C

Résolu
enjoyC Messages postés 1 Statut Membre -  
Emmanuel Delahaye Messages postés 119 Statut Membre -
bonjour,

j'etudie des nombres flotants et j'aimerai savoir si ils sont entier (ex: 13.000 est flotant et entier).
Existe - il une fonction en langage C qui prenne un float en entrée et renvoie 1 ou 0 si le nombre est entier ou pas ? ou quelque chose dns le genre .

Merci



3 réponses

Emmanuel Delahaye Messages postés 119 Statut Membre 7
 
si fmod() vaut 0 ou est < DBL_EPSILON. Mais vu l'imprécision chronique des flottants le résultat n'est pas garanti ...

Ce que tu affiches "13.00" avec "%.2f" peut très bien en réalité être 13.00000001 avec "%.9f"...
1
0beron Messages postés 79 Statut Membre 56
 
Je ne sais pas si une telle fonction existe mais tu peux essayer une division euclidienne par 1 ( avec / ), et comparer le résultat avec ta variable de départ. Si c'est la même chose c'est un entier sinon, c'est qu'il y a un reste donc c'est un float.
0
n'ps
 
Oui j'ai essayé mais le % (modulo) n'est pas autorisé sur le floats, ou alors je n'arrive pas a l'utiliser.
0
Emmanuel Delahaye Messages postés 119 Statut Membre 7
 
C'est pour ça qu'il y a fmod() ...
0
Meoran Messages postés 1640 Statut Membre 208
 
Divise ton nombre float par la partie entière de ce nombre. Si le résultat est 1 alors le nombre est un entier.
0
chuka Messages postés 980 Statut Membre 378
 
Salut,
la div fonctionne mais la soustraction sera peut-être plus approprié...ca se discute!!;))
unsigned char IsFloat(float t)
{
return((t-(int)t)>0?1:0);
}
@+
0