Comment savoir si un float est entier? Lang C

Résolu/Fermé
enjoyC Messages postés 1 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 8 mai 2010 - Modifié par enjoyC le 8/05/2010 à 19:17
Emmanuel Delahaye Messages postés 107 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 juillet 2019 - 10 mai 2010 à 22:50
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 107 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 juillet 2019 7
9 mai 2010 à 09:48
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 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
8 mai 2010 à 22:46
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
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 107 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 juillet 2019 7
10 mai 2010 à 22:50
C'est pour ça qu'il y a fmod() ...
0
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 206
8 mai 2010 à 22:47
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 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
8 mai 2010 à 22:56
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