bjrs
est-ce qq'un peut me dire si il connait une fonction en c ou c++ ou dans la MFC pour arrondir des doubles à 2 chiffres après la virgule ?
Voir du code ou une procedure ?
bjrs
est-ce qq'un peut me dire si il connait une fonction en c ou c++ ou dans la MFC pour arrondir des doubles à 2 chiffres après la virgule ?
Voir du code ou une procedure ?
Avec du code, je pense qu'on peut faire ça comme ça :
Ca devrait bien marcher, je pense...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 double l_mydouble = 20,2467; double l_dblTemp = l_mydouble * 100; int l_iTemp = (int) (l_dblTemp); // Arrondi Superieur if ((l_dblTemp - l_iTemp) > 0.5) { l_mydouble = (l_iTemp + 1)/100; } // Arrondi Inferieur else { l_mydouble = (l_iTemp)/100; }
j'ai fait une recherche rapide sur google (he oui).
y'a un PDF qui semble sympa à ce sujet.
Sinon en 2 coups d'oeil ce qui semble utilisé c'est ceil() et floor()
renseigne-toi![]()
Merci les gars , mais j'ai trouvé une solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 code double n; double x = 0.8236547 double y = modf(x*100,&n); n = n/100 ; => n est représenté avec 2 chiffre après la virgule
#include <iostream>
#include <string.h>
//*************** arrondi superieur ou inferiieur **********
using namespace std ;
int main()
{
double l_mydouble = 0;
char chaine[20];
cout << " entrez un chiffre a vigule : "<<endl;
cin >> l_mydouble;
cout <<" vous les vous l'arrondi superieur ou inferieur ? " ;
cin >> chaine;
double l_dblTemp = l_mydouble * 10;
int l_iTemp = (int) (l_dblTemp);
if (strcmp(chaine , "superieur")==0)
{
cout << "Arrondi Superieur"<<endl;
l_mydouble = (l_iTemp + 10)/10;
cout<< l_mydouble<<endl;
}
else
{
cout << "Arrondi Inferieur"<<endl;
l_mydouble = (l_iTemp)/10;
}
cout << l_mydouble << endl;
return 0;
}
Tu es censé coder en C++, pas en "C sur un compilo C++": Pourquoi utilises-tu un tableau de char (et strcmp) plutôt qu'une std::string?
Aussi, es-tu sûr de cette ligne?
Normalement, quand on arrondit au supérieur, on n'ajoute pas le diviseur, mais la valeur juste en-dessous (e.g. pour des entiers, on écrirait +9).
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_mydouble = (l_iTemp + 10)/10;
Ou plus simplement, pour des nombres à virgule flottante on utiliserait ceil().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager