probleme egalité de deux double - C - Programmation
Marsh Posté le 25-05-2007 à 19:05:59
Hum... as-tu bien inclu "math.h" ???
Si tu ne le fais pas, le compilo voyant arriver "fabs" qu'il ne connait pas, la considèrera comme du "int" et
1) ne considèrera que les 2 premiers octets de la valeur renvoyée
2) convertira ces 2 octets a format "int"
=> peu de chances d'obtenir le bon résultat !!!
Marsh Posté le 26-05-2007 à 01:36:46
oui oui j'ai bien inclu math.h
mais quand j'avais essayé a==b , ca ne marchait pas
mais je peux retenter le coup
Marsh Posté le 26-05-2007 à 02:51:37
La probabilité d'avoir une égalité réalisée entre deux valeurs etant quasi nule l'idée de les soustraire et de comaprer la valeur absolue du résultat était bonne (je ne vois d'ailleur pas d'autre moyen).
Maintenant si cette comparaison as des répercutions ailleur dans ton programme, il serais plus aisé de t'aider avec une plus grande portion de code.
Ton probleme est peuetre du à l'imprécision de 0.000001
ou alors a l'arondissement effectué pour faire entrer la valeur décimale dans une variable binaire (0.1 est un nombre décimal illimité en biniare)
Marsh Posté le 26-05-2007 à 07:27:09
wai mais là imagine que tes variables ont un sens dans ton programme
et elles sont censées avoir la meme valeur a certain moment
et meme lorsqu'elles avaient la meme valeur (vérification avec des printf)
ca ne marchait pas
p-ze est ce du a une imprécision des printf ?
ps : mon code est long (presque mille ligne)
je veux bien te donner la portion ou il n'y a que :le fabs mais je sais pas si ca te servira bcp
Marsh Posté le 26-05-2007 à 22:53:33
1) 1.0e-6d à la place de 0.000001 ?
2) Ton calcul numérique diverge -> t'es bon pour tout revoir, du choix de l'algo à son implémentation (pertes de précisions en cours de calcul notamment).
Marsh Posté le 25-05-2007 à 18:39:39
donc voilà dans un programme lorsque je test l'égalité de deux doubles,
meme lorsque cela est supposé etre vraie, cela me donne des résultats faux
je ne sais pas trop pourquoi
j'ai testé
if( fabs(a-b) < 0.000001)
avec a et b les deux doubles
mais visiblement cela a quelques repercussions sur mon programme
je vous remercie d'avance de votre aide