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 :

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);
Faites le calcul vous-m�me... nbx doit �tre �gal � 452.
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 :

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;
... le d�calage est de plus en plus important !

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.