Calcul avec 2 chiffres après la virgule - C++ - Programmation
Marsh Posté le 23-06-2009 à 10:38:14
ton c est une variable dans le prog ou un dekoi ke tu stok ?
Marsh Posté le 23-06-2009 à 10:46:48
S'il n'y a pas de méthode toute faite tu peux toujours multiplier par 100 prendre la partie entière et rediviser par 100.
Marsh Posté le 23-06-2009 à 10:49:53
J'aurais les deux
en fait si je voudrai que lorsque le programme effectue un calcul il prend tous les chiffres des deux variables mais que au résultat final il m'arrondi tous à 2 chiffres après la virgule
a=724 (variable stockée)
b=0.0472 (variable stockée)
après calcul ( à la calculette ) on on obtient c=34,4088
et je voudrai que le programme garde pour les prochaines opérations c=34, 41 ( arrondie à deux chiffres après la virgule)
c=34,41 et d=4.6954
e=(c*d)=161,57 ( à la calculette on obtient 161,568714)
etc
Merci pour votre aide
j'ai trouvé des truc avec cmath cfloat etc mais je sais pas comment les utilisées...
Marsh Posté le 23-06-2009 à 10:54:08
Pour ma méthode il y a une fonction sans doute pour prendre la partie entière en arrondissant et dans ce cas ça résoud ton problème non ?
Marsh Posté le 23-06-2009 à 10:58:47
Deamon a écrit : Pour ma méthode il y a une fonction sans doute pour prendre la partie entière en arrondissant et dans ce cas ça résoud ton problème non ? |
oui sa répond à mon problème mais j'ai vraiment beaucoup de calcul...
mais bon c'est sympa d'avoir trouvé cette solution!
en fait j'avais trouvé sa mais je sais pas comment il faut l'utiliser...
http://www.cplusplus.com/reference/clibrary/cfloat/
Marsh Posté le 23-06-2009 à 11:08:14
beaucoup de calculs... en 1 ligne ça tient :
nouveau= entierArrondi(ancien*100)/100
Sous réserve qu'une fonction entierArrondi existe bien.
Pour cfloat je connais pas assez désolé.
Marsh Posté le 23-06-2009 à 11:22:38
Deamon a écrit : beaucoup de calculs... en 1 ligne ça tient : |
J'ai repris ta première méthode sauf que j'arrive pas à la mettre en place ..
int main()
{
double a;
double b;
double c;
double d;
int e;
double f;
a=724;
b=0.0472;
c=a*b;
cout<<" valeur calculette = "<<c<<endl;
d=c*100;
cout<<" c x 100 = "<<d<<endl;
e=d;
cout<< " partie entiere de d = "<<e<<endl;
f=e/100;
cout<<" valeur arrondie= "<<f<<endl;
return 0;
}
sauf que pour f il affiche 34... alors que e=3417...
partie entiere de d= 3417
valeur arrondie = 34
(je dois tout mélangé avec int et double .... cf warning....)
Merci pour ton aide
Marsh Posté le 23-06-2009 à 11:35:49
Attention si tu castes un double en int le résultat va être tronqué et non arrondi.
En tout cas bizarre pour e qui affiche 34.
Marsh Posté le 23-06-2009 à 11:40:03
C'est un problème de formatage ou bien de calcul flottant inexact ce sujet ?
Marsh Posté le 23-06-2009 à 11:45:57
j'ai trouvé la solution avec une fonction mais je sais pas comment il faut la ''tapé" dans codeblocks ...
http://faq.vb.free.fr/index.php?question=148
Il s'agit de la fonction round()
( Cf mon post plus haut j'ai rectifié j'ai mal tapé les lettres ...)
Marsh Posté le 23-06-2009 à 11:59:20
Tu vas rien arrondir du tout, s'il n'existe pas de représentation exacte avec 2 décimales de ton nombre, si tu l'affiches, t'auras le droit à un joli 1.333333333333333333333333333333 au lieu du 1.34 espéré (fictif).
Il te faut gérer et l'arrondi et l'affichage:
http://www.cplusplus.com/reference [...] precision/
Marsh Posté le 23-06-2009 à 12:44:30
Taz a écrit : Tu vas rien arrondir du tout, s'il n'existe pas de représentation exacte avec 2 décimales de ton nombre, si tu l'affiches, t'auras le droit à un joli 1.333333333333333333333333333333 au lieu du 1.34 espéré (fictif). |
ok merci c'est ce que je cherchais par contre est ce que il est possible de juste de garder la valeur en stock et ne pas l'afficher ?
Marsh Posté le 23-06-2009 à 13:19:25
Calculer en flottant avec deux chiffres décimaux après la virgule n'a guère de sens pour le moment, les représentations internes courantes étant binaires. Tu peux contrôler les représentations textuelles envoyées sur des flux avec std::setprecision().
Marsh Posté le 23-06-2009 à 10:20:09
Bonjour à tous!
Je suis débutant en programmation ( seulement 2h d'info tous les 15 jours programme pcsi...)
Et j'ai un souci je vous l'explique par un exemple
par le programme (code blocks c++)
a=9.6587
b=54.554
et je voudrai c=a*b
on trouve c=536,921
je voudrai que le programme mette c=536,92
comment faire ?? (si possible avec une méthode détaillée)
Merci beaucoup!