Bonjour,
J'ai �cris mon double -13.99009 mais quand je l'affiche il est arrondi � 13.9901 quelqu'un a une solution?
On utilise CMake
Bonjour,
J'ai �cris mon double -13.99009 mais quand je l'affiche il est arrondi � 13.9901 quelqu'un a une solution?
On utilise CMake
Bonjour,
Il n'y a pas de solution simple en utilisant les types de base, c'est inh�rent � la repr�sentation des donn�es dans nos ordinateurs.
Une solution que je trouve lourde pour un petit probl�me comme celui-l� : installer l'application GMP, qui fait du calcul multi-pr�cision, plus connue pour le calcul sur les entiers, mais qui calcule �galement avec des r�els (si tu en as besoin, elle te fera des calculs sur plusieurs millions de d�cimales).
Sinon, tu peux transformer tes r�els en entiers pas multiplication par un facteur suffisamment grand, mais �a atteint vite les limites.
![]()
Merci,
je me disais aussi que c��tait nos machines.
Je compte utilisait mpfr c'est la lib qui nous a �t� recommand� pour le projet, mais je voulais faire une impl�mentation par des doubles puis un peu plus tard quand on aura un truc fonctionnel utilisait mpfr.
L�, tu n'as pas un probl�me de pr�cision de calcul, mais juste un, probl�me d'affichage :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 #include <iostream> #include <iomanip> using namespace std; int main() { double d = -13.99009; cout << d << endl; cout << setprecision(10) << d << endl; }
Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.
Merci je pensais que �a venait du microprocesseur
Partager