-
Conversion Réel - Double
Bonjour,
j'ai un problème de conversion de réel à double précision en Fortran 90 : au delà de la 6ème digit au lieu de me mettre des 0, Fortran me mets de chiffres qui me conduisent à des décalages dans mes résultats :
Exemple : 6.555555 devient 6.555555091245 au lieu de 6.555555000000
connaissez vous un moyen d'avoir une conversion exact ??
Merci d'avance
-
La solution la plus propre est d'eviter le transtypage REAL*4 vers REAL*8, et de travailler toujours en double precision. Ce n'est helas pas toujours possible, notamment pour des raisons de stockage de donnees.
Sinon, je ne vois pas de solution a ton probleme. De toute facon, si tu travailles a une precision de 10-6, cela ne devrait pas etre embetant (les autres chiffres sont insignifiants).
Enfin, il y a peut etre une option de compilation qui adresse ce probleme, cf. la documentation de ton compilateur.
-
je te confirme que pour des raisons de stockage je dois tout d'abord travailler en simple précision, en revanche pour la suite je dois passer en double et du coup les chiffres ajouté ne sont plus insignifiant.
-
Il n'y a pas de solution generale a ton probleme. Un ordinateur n'est pas capable de representer un ensemble continu de nombres, donc les reels sont representes comme une suite de valeurs discretes, et on travaille sur la valeur la plus proche.
Note que ton 6.555555091245 est bien egal a 6.55555[5]. Tu dois t'imposer une precision. Puisque tes donnees sont a l'origine precise a 10-6, tous les chiffres qui suivent sont non significatifs. Donc si tu multiplies par 100, par exemple, ta precision (apres la virgule) devient 10-4. Si tu veux une meilleure precision, alors des donnees en entree doivent etre de type REAL*8 (ou plus).