Comparaison en C++

Voilà,

J'aimerais pouvoir comparer un nombre à sa partie entière( cad pouvoir dire si un nombre est décimal ou entier). Comment puis-je faire. Ca fait un moment que je tourne en rond sur cette question et là je craque !

merci

9 réponses

  1. Tu castes ton "float" dans un "unsigned int" comme suit:

    ...
    float valeur1 ;
    unsigned int valeur2;
    valeur 1 = 3.141592
    unsigned int valeur2 = (unsigned int)valeur2;
    ...

    puis reste à comparer 2 entiers.
    0
    1. le but c'est de comparer un nombre (décimal ou entier) avec la partie entiere de ce même nombre.
      0
      1. Bah ça change pas grand chose t'affecte une variable supplémentaire pour contenir sa partie entiere du style:

        float valeur1;
        float valeur2;
        valeur 2 = (float)(unsigned int)valeur1;

        ou bien

        float valeur1;
        unsigned int valeur2;
        float valeur3;
        valeur2 = (unsigned int)valeur1;
        valeur3 = (float)valeur2;
        0
        1. Voilà le code que je génère

          float m=0;
          float M;
          M= (float)(unsigned int)m;

          cout<<"entrer un nombre decimal"<<endl;
          cin>>m;

          if (m!=M)
          cout<<"la partie entiere superieure est:"<<int(m)+1<<endl;
          else
          cout<<"la partie entiere superieure est:"<<M<<endl;

          Le truc c'est qu'il me sort 3 pour 2,6 mais pour 2 il me sort 3

          Quel est le problème dans mon code ??
          0
          1. C'est le résultat que tu dois trouver:la partie entière supérieur d'un nombre c'est 1+partie entiere. La partie entière de 2 c'est 2 donc la partie entiere superieur de 2 c'est 3.. .
            0
          2. Bref si tu ne veux pas la partie entierer superieur, tu n'aoute pas 1 à m dans ton "cout"
            0
        2. La 1ère méthode que j'ai donnée c'était plutôt du "expérimental" essaie la 2nde elle me parait plus sur.
          0
          1. J'ai trouvé ca dans une autre réponse:
            "
            n:reel;
            s:entier;
            début
            lire(n);
            s=n div1; {div fait la division entière d'1 nbre qlcq}
            afficher ('la partie entière de ',,'est ',s);
            "

            le div est "%" en langage C
            0
            1. Desole j'ai pas fini:
              une fois que tu as le nombre et sa partie entiere, tu soustrait l'un à l'autre. Si ils sont égaux le nombre est entier, sinon il ne l'est pas
              0
              1. Je suis peut-être à côté de la plaque mais il semble que ce petit bout de code doit marcher (du moins il marche sous VC 6 et sur ma machine) :

                BOOL IsDecimal(double dNum)
                {
                ASSERT(dNum <= double(UINT_MAX));
                UINT uNum = dNum;
                double diff = (double)uNum - dNum;
                return (!diff ? TRUE : FALSE);
                }
                0
                1. Erratum :
                  Evidemment, il fallait lire dans le message n°10,

                  return (diff ? TRUE : FALSE);

                  et non, comme écrit stupidement :

                  return (!diff ? TRUE : FALSE);

                  Mille excuses.
                  0