logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [Résolu] [C] Problème de Float
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [Résolu] [C] Problème de Float  (Lu 2516 fois)
mogg41

Profil challenge

Classement : 451/54342

Membre Senior
****
Hors ligne Hors ligne
Messages: 267

Mogg41 pour vous aider!


Voir le profil
« le: 13 Janvier 2008 à 23:36:47 »

Bonjour à tous.

Mon problème est le suivant:
J'ai créé un petit programme pour résoudre une équation par brute force. Pour cela je dois utiliser des nombres trés petits (allant jusqu'à 0,00001). J'ai donc créé une variable de type float, mais j'ai remarqué que ma variable ne prend qu'une valeur approximative de celle que je lui donne!

J'aimerais savoir si une solution existe à ce problème. Peut etre que je n'utilise pas le bon type de variable..

Merci d'avance de vos réponses et suggestions.
« Dernière édition: 17 Août 2008 à 15:50:24 par mogg41 » Journalisée

"Il ne savait pas que c'était impossible alors il l'a fait." Mark Twain
Zmx

Profil challenge

Classement : 71/54342

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 559


Voir le profil WWW
« #1 le: 14 Janvier 2008 à 07:45:16 »

Il me semble que c'est le meme soucis qu'en Oracle.
Les Float ont un "pas/step" egal a la précision et lors qu'un calcul il prend la valeur la plus proche.
Journalisée

Al3x
Profil challenge

Classement : 1108/54342

Membre Junior
**
Hors ligne Hors ligne
Messages: 54


Voir le profil
« #2 le: 14 Janvier 2008 à 10:34:49 »

Tu pourrais utiliser des double et un les comparer avec une variable qui te sert de précision :
Code:
const double PRECISION=0.000000000001;
.
.
.

if(d1 - d2 <= PRECISION) { //Ton code. On peut considérer que les 2 double sont égaux }
Journalisée
mogg41

Profil challenge

Classement : 451/54342

Membre Senior
****
Hors ligne Hors ligne
Messages: 267

Mogg41 pour vous aider!


Voir le profil
« #3 le: 14 Janvier 2008 à 14:41:08 »

Merci Alex pour cette astuce!
Je m'en vais de ce pas modifier mon code..
* mogg41 va réussir une épreuve de logique trés bientôt!! 
Journalisée

"Il ne savait pas que c'était impossible alors il l'a fait." Mark Twain
Al3x
Profil challenge

Classement : 1108/54342

Membre Junior
**
Hors ligne Hors ligne
Messages: 54


Voir le profil
« #4 le: 14 Janvier 2008 à 16:17:29 »

J'ai oublié de préciser que la condition ne fonctionne que dans le cas où d1 >= d2 
A toi d'adapter :p
Journalisée
Pages: [1]
  Imprimer  
 
Aller à: