Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2975 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Calcul avec 2 chiffres après la virgule

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Calcul avec 2 chiffres après la virgule

n°1897988
miguydu69
Posté le 23-06-2009 à 10:20:09  profilanswer
 

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!
 

mood
Publicité
Posté le 23-06-2009 à 10:20:09  profilanswer
 

n°1898006
TheTeck
Posté le 23-06-2009 à 10:38:14  profilanswer
 

ton c est une variable dans le prog ou un dekoi ke tu stok ?

n°1898016
Deamon
Posté le 23-06-2009 à 10:46:48  profilanswer
 

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.

n°1898023
miguydu69
Posté le 23-06-2009 à 10:49:53  profilanswer
 

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...


Message édité par miguydu69 le 23-06-2009 à 10:51:05
n°1898031
Deamon
Posté le 23-06-2009 à 10:54:08  profilanswer
 

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 ?

n°1898037
miguydu69
Posté le 23-06-2009 à 10:58:47  profilanswer
 

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/

n°1898051
Deamon
Posté le 23-06-2009 à 11:08:14  profilanswer
 

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é.

Message cité 1 fois
Message édité par Deamon le 23-06-2009 à 11:09:09
n°1898065
miguydu69
Posté le 23-06-2009 à 11:22:38  profilanswer
 

Deamon a écrit :

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é.


 
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


Message édité par miguydu69 le 23-06-2009 à 11:51:17
n°1898081
Deamon
Posté le 23-06-2009 à 11:35:49  profilanswer
 

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.

n°1898086
Taz
bisounours-codeur
Posté le 23-06-2009 à 11:40:03  profilanswer
 

C'est un problème de formatage ou bien de calcul flottant inexact ce sujet ?

mood
Publicité
Posté le 23-06-2009 à 11:40:03  profilanswer
 

n°1898094
miguydu69
Posté le 23-06-2009 à 11:45:57  profilanswer
 

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 ...)


Message édité par miguydu69 le 23-06-2009 à 11:47:21
n°1898109
Taz
bisounours-codeur
Posté le 23-06-2009 à 11:59:20  profilanswer
 

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/

n°1898127
miguydu69
Posté le 23-06-2009 à 12:44:30  profilanswer
 

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).
 
Il te faut gérer et l'arrondi et l'affichage:
http://www.cplusplus.com/reference [...] precision/


 
 
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 ?  

n°1898136
Un Program​meur
Posté le 23-06-2009 à 13:19:25  profilanswer
 

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().  


Message édité par Un Programmeur le 23-06-2009 à 14:49:29

---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1898153
miguydu69
Posté le 23-06-2009 à 13:39:21  profilanswer
 

ok merci pour tout!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Calcul avec 2 chiffres après la virgule

 

Sujets relatifs
Affichage chiffres a virgulesFactorielle et calcul de tous les ordres possibles de x éléments
déclencher le calcul d'un fichier excel avec VBAProblème de calcul de Delta
[batch] Calcul d'un fichier txt et envoi vers sqlEnregistrer fichier avec separateur virgule
PHP : Calcul opération dans une variableCalcul de difference entre 2 dates dans 1 fichier 'Batch'
Calcul longueur d'une liste à liens multiplesInserer feuille de calcul dans sujet d'un forum
Plus de sujets relatifs à : Calcul avec 2 chiffres après la virgule


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR