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