Bonjour,
Je suis actuellement en stage et dans mon programme j'ai créer une map avec des clefs flottantes (mauvaise idée). Suite à des problèmes de précisions de flottant pour accéder à ma map j'ai écris ma propre fonction de comparaison. Je suis tomber sur un papier qui traîte du problème de la précision des float. Dans cet article ils donnent un exemple de code qui suit :
Le code devrait retourner 1 dans tous les cas. Mais que ce soit en double ou en float et pour des puissances supérieures ou égales à 19 (je n'ai pas beaucoup testé non plus) le calcul à la ligne 6 retourne 1 et 0 à la ligne 7.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 float x = 10e30; float y = -10e30; float z = 1.0; cout << (x + y) + z << endl; // retourne 1 cout << x +(y + z) << endl; // retourne 0
Ma question est donc: existe -t-il une limite en dessous de laquelle je peux manipuler des nombres sans avoir à me soucier des problèmes de "codage de float"?
edit: l'article dont je parle est ici
Partager