Bonjour,
Je m'arrache les cheveux sur une appli depuis quelques heures pour un souci de pr�cision de float...
En simplifiant au maximum mon code, voici le test que j'effectue :
Faites le calcul vous-m�me... nbx doit �tre �gal � 452.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 float xmin, xmax, precision; int nbx; xmin = 599.4; xmax = 689.8; precision = 0.2; nbx = ((xmax-xmin)/precision);
Or le d�bogueur me retourne 451 !!!
En rempla�ant nbx par un float, j'obtiens 451.999981689
On se rapproche de ce que je suis en mesure d'attendre, mais si je commence � faire des boucles de ce type :
... le d�calage est de plus en plus important !
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 float x; float *result = new float[nbx]; // Je suis obligé d'utiliser un int pour mon nbx dans ce cas là ! int p; p = 0; for(x=xmin;x<=xmax;++x) { result[p] = x; ++p; } delete[] result;
Comment corriger ce type de probl�me ?
A noter que je me suis amus� �galement avec des double. Le souci est le m�me, �videmment ! Je connais le probl�me de la pr�cision des r�els, tels qu'ils sont cod�s sur x bits, mais j'aimerais un peu m'en affranchir ! Comment faites-vous dans ce genre de cas ?
Merci par avance.
Partager