Souci avec des float et leur pr�cision
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:
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:
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.