Comparaison en C++

alocmoa -  
phneveu Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

9 réponses

Bob
 
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
alocmoa
 
le but c'est de comparer un nombre (décimal ou entier) avec la partie entiere de ce même nombre.
0
Bob
 
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
alocmoa
 
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
dje-dje
 
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
dje-dje
 
Bref si tu ne veux pas la partie entierer superieur, tu n'aoute pas 1 à m dans ton "cout"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bob
 
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
dje-dje
 
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
dje-dje
 
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
phneveu Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
phneveu Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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