Posez votre question Signaler

Comparaison en C++

alocmoa - Dernière réponse le 17 nov. 2003 à 21:40
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
Lire la suite 

Comparaison en C++ »

11 réponses
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
le but c'est de comparer un nombre (décimal ou entier) avec la partie entiere de ce même nombre.
Ajouter un commentaire
Réponse
+0
moins plus
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;
Ajouter un commentaire
Réponse
+0
moins plus
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 ??
dje-dje - 17 nov. 2003 à 17:12
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.. .
dje-dje - 17 nov. 2003 à 17:13
Bref si tu ne veux pas la partie entierer superieur, tu n'aoute pas 1 à m dans ton "cout"
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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);
}
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « comparaison en C++ » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook