Comment savoir si un float est entier? Lang C

Résolu
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. 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
    1. 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. 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
    2. 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. 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. C'est pour ça qu'il y a fmod() ...
        0