Salut,
je cherche a faire un arrondi sur un double en pur C++
un peu comme en dot.net
17,987 = Math.round(17,987654, 3 )
si quelqu'un a une id�e
merci
Version imprimable
Salut,
je cherche a faire un arrondi sur un double en pur C++
un peu comme en dot.net
17,987 = Math.round(17,987654, 3 )
si quelqu'un a une id�e
merci
Bonjour
en utilisant une bibliotheque du c, on peut faire :
ou m�me -sans include- :Code:
1
2
3
4
5 #include <cmath> ... double y,x y = floor(x) //167.1860 -> 167 y = (1./100.) * floor(x * 100.) //167.1860 -> 167.18
double x,y
Code:
1
2 y = (int)x //167.1860 -> 167 y = (1./100.) * ((int)(x * 100.)) //167.1860 -> 167.18
Attention, les m�thodes donn�es ne renverront que l'arrondi par valeur inf�rieure.
mabu
Ca marche si on fait un cast double???
euh ... ? je ne sais pas, � tester... c'est du c++ pur ca ?Citation:
Envoy� par reggae
La notion d'arrondi sur un nombre � virgule flottante est un pi�ge, en informatique. C'est impossible. Exemple :
Sur mon compilo, la premi�re ligne peut faire croire qu'on a arrondi (elle affiche 0.1), mais la deuxi�me montre qu'il n'en est rien (elle affiche 0.10000000000000001). Un nombre tel que 0.1 (et plein d'autres) ne peut pas exister sous forme de nombre � virgule flottante cod� en base 2.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <iostream> #include <iomanip> using namespace std; int main() { double exemple = 0.123456789; double arrondi = (1./10.) * ((int)(exemple * 10.)) ; cout << arrondi << endl; cout << setprecision(20) << arrondi << endl; cin.ignore(); }
La question est maintenant pourquoi tu veux arrondir. Si c'est pour g�rer l'affichage, je te conseilles de te tourner vers les manipulateurs du flux, afin de choisir te mise en forme.
Si c'est pour faire des calculs (comme du mon�taire), alors float ou double ne sont pas des types adapt�s. Il te faut cr�er tes propres types mon�taires qui respectent les r�gles d'arrondi d�finies dans la loi du pays o� tu veux utiliser ton code.
Non peut �tre pas... tu as sans doute raison ce n'est pas tr�s "propre"!
Pour faire des calculs mon�taires pr�cis, les calculs � virgule flottante sont d�conseill�s en effet...
Mieux vaut utiliser des nombres � virgule fixe, des nombres directement exprim�s en centimes ou bien s�parer carr�ment la partie enti�re et la partie d�cimale...