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

  1. 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
  2. 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
    1. 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
    2. Emmanuel Delahaye Messages postés 119 Statut Membre 7
       
      C'est pour ça qu'il y a fmod() ...
      0
  3. Meoran Messages postés 1566 Date d'inscription   Statut Membre Dernière intervention   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
    1. chuka Messages postés 980 Statut Membre 379
       
      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