Problème de multiplication de doubles - C++ - Programmation
Marsh Posté le 13-06-2008 à 11:09:25
euh 0.8 - (-0.99 * 0.25) ça fait bien du 1.06.
Code :
|
Marsh Posté le 13-06-2008 à 11:19:36
ReplyMarsh Posté le 13-06-2008 à 11:30:17
Je ne vois pas bien ce que le compilateur vient faire là-dedans.
Y a pas un "e+??" après z, x ou y ?
Marsh Posté le 13-06-2008 à 11:53:24
t'as compilé le même bout de code que moi et tu n'as pas de résultat similaire ?
Marsh Posté le 13-06-2008 à 13:30:37
inblack a écrit : Je suis sous visual c++ et ca ne marche pas pareil... |
moi aussi et ça marche pareil (encore heureux d'ailleurs)
Marsh Posté le 13-06-2008 à 14:28:11
Taz quand j'essaie ton code ca marche mais en réalité les valeurs reelle de x y et z(celles calculés par le compilateur) doivent contenir bcp plus de chiffres apres la virgule (plus que les 64 bits autorisés par un double donc ils sont tranqués et stockés dans x,y et z) et donc puisque les valeurs de x y et z correspondent déja au maximum que peut contenir un double, le fait de les multiplier donne des valeurs qui devrait etre stockés sur 128 bits par exemple...ce qui conduit a des valeurs aberrantes si on les stocke sur 64 bits....
C'est mon intérprétation.... est ce que je me trompe...
c'est pour ca que j'ai pensé a limiter le nombre des chiffres apres la virgule dans tous les calculs que je fait...
en fait j'ai décomposé ca en x y z pour voir d'ou vient le probleme mais j'ai pleins de calculs comme ca a faire et il me faut une méthode qui marche a tout les coups...
Marsh Posté le 13-06-2008 à 14:35:05
Tu te trompes. T'as beau multiplier 0.33 ou 0.330000000000000012468416574687416354124254, ça ne donnera jamais 9e+61.
Marsh Posté le 13-06-2008 à 14:35:22
Est-ce que toutes tes variables intermédiaires sont bien des doubles aussi ?
Envoie un peu plus de code sinon qu'on puisse voir le problème. Ca m'étonnerai fort que tes souçis soient dus à un dépassement des capacité.
Marsh Posté le 13-06-2008 à 14:45:35
Code :
|
Marsh Posté le 13-06-2008 à 14:47:41
au niveau du debogage je m'arrete la donc c pas la peine de vous donner la suite...sinon pour les valeurs des variable utilisées:
Code :
|
Marsh Posté le 13-06-2008 à 15:10:53
j'ai mis des "l" à la suite des valeurs parce que j'avais lu un truc dans un bouquin que j'ai pas tres bien compris d'ailleurs mais en fait ca ne change rien à mon problème...
Marsh Posté le 13-06-2008 à 15:23:04
inblack a écrit :
|
ça te dit pas de sortir quelques constantes ?
Marsh Posté le 13-06-2008 à 15:31:34
Il manque les déclarations de _ModuleI, _phi, _alpha, _T, _t...
Marsh Posté le 13-06-2008 à 15:34:25
inblack a écrit : au niveau du debogage je m'arrete la donc c pas la peine de vous donner la suite...sinon pour les valeurs des variable utilisées:
|
c'est ce que tu veux?
je l'avais posté plus haut mais en
fait je retire les "l" parce que ca ne sert a rien
Marsh Posté le 13-06-2008 à 15:35:45
Sinon t'as ca aussi:
Code :
|
Marsh Posté le 13-06-2008 à 16:01:30
inblack a écrit : deja fait..regarde plus haut |
non:
Code :
|
ça peut faire:
Code :
|
enfin simplifier, réduire, réutiliser des calculs, aérer, tout ça....
et les variables avec _ ça pue.
pi est déjà défini dans maths.h (cmaths) comme M_PI, y'a un define a mettre stout.
Marsh Posté le 13-06-2008 à 16:34:38
utilise un truc de vérif mémoire. tu dois bousiller ta pile à tous les coups. Ou bien fourni nous un code minimal et compilable.
Marsh Posté le 13-06-2008 à 10:02:20
Bonjour tout lemonde
J'ai un probème que je n'arrive pas à résoudre depuis quelques jours et ce n'est pas faute d'avoir chérché...
Voici mon code
J'ai ph1tc=-9.2559631349317831e+061 alors que z=0.81462211321630484, x=0.25394129165067114 et y=-0.99026806534391931
Le problème doit venir de la reconversion en décimale aprés la multiplication.
Est ce que quelqu'un peut m'aider??
J'avais penser à limiter le nombre de chiffres après la virgule dans tout les calculs (opérations arithmétiques mais aussi dans les calculs de sinus et d'exponentiels) mais ca je ne sais pas faire et je dois avoir une bonne précision donc pas mal de chiffres...
Merci baucoup pour votre aide..