probleme egalité de deux double

probleme egalité de deux double - C - Programmation

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
 
[:augie]

Reply

Marsh Posté le 25-05-2007 à 18:39:39   

Reply

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 !!!


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

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 :/

Reply

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)

Reply

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


Message édité par Profil supprimé le 26-05-2007 à 07:27:53
Reply

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).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed