Comparaison en C++
alocmoa
-
phneveu Messages postés 2 Statut Membre -
phneveu Messages postés 2 Statut Membre -
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
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
-
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. -
le but c'est de comparer un nombre (décimal ou entier) avec la partie entiere de ce même nombre.
-
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; -
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 ?? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.
-
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 -
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 -
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);
} -
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.