Problèmes avec un chiffre à virgule [résolu]

Problèmes avec un chiffre à virgule [résolu] - C++ - Programmation

Marsh Posté le 15-06-2005 à 14:58:37    

Salut à tous, j'ai un problème pour une simple division et impossible de savoir pourquoi...
 
Voici le code :

Code :
  1. cout<<"opération : "<<essai<<" / "<<temps_total<<endl;
  2. long essai2=essai/temps_total;
  3. cout<<"résultat : "<<(essai2*100)<<endl;


 
essai étant égal à 15000 car je fais un Sleep(15000) et le temps total est égal à 120
 
Et c'est lorsque le résultat est inférieur à 1 , il met que essai 2 est égal à 0.
 
Merci de votre aide... :jap:


Message édité par Aldarek le 16-06-2005 à 09:50:52
Reply

Marsh Posté le 15-06-2005 à 14:58:37   

Reply

Marsh Posté le 15-06-2005 à 15:29:06    

logique pour un nombre entier...

Reply

Marsh Posté le 15-06-2005 à 15:44:57    

mais le long accepte bien les chiffres après la virgule, et même en faisant avec un float ca ne marche pas...

Reply

Marsh Posté le 15-06-2005 à 17:26:12    

mais le long accepte bien les chiffres après la virgule => ????
 
Tu ne confonds pas les formats " long " et " long double " ?
 
Si cela ne marche pas avec les float, c'est^peut-être un problème de conversion. Essaie de caster simplement par :
 

Code :
  1. long essai2 = (long) ((float) essai/(float) temps_total);

Reply

Marsh Posté le 15-06-2005 à 18:53:00    

Je ne vois pas l'intérêt de caster en float pour finalement recaster en long, il est plus intéressant de garder le résultat en float :

float essai2 = (float) essai/(float) temps_total;


On remplacera généralement float par double pour une meilleure précision.

Reply

Marsh Posté le 15-06-2005 à 19:47:08    

il suffit que l'une des 2 operandes soit reelle, et les cast "a la C" c'est mal en c++

Code :
  1. float essai2 = float(essai)/ temps_total;

Reply

Marsh Posté le 16-06-2005 à 09:01:44    

Effectivement, il peut être intéressant de conserver les formats initaux. C'était juste parce que ce format avait été évoqué par Aldarek. De plus, on ne sait pas quels sont les usages futurs de la variable. Peut-être est-il nécessaire de revenir sur des longs ?
 
Skelter, quand tu dis que les cast à la C c'est mal en C++, est-ce que tu veut dire qu'il est préférable d'utiliser des reinterpret_cast<float> à la place ?

Reply

Marsh Posté le 16-06-2005 à 11:33:00    

plutot static_cast dans ce cas, mais on peut construire un float a partir d'un entier
je sais pas quelle est la meilleur solution ou si elles sont equivalente

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed