Question

Je viens juste de commencer à travailler avec la bibliothèque de précision arbitraire MPFR et très bientôt rencontrer un comportement très bizarre. L'objectif principal de l'utiliser était d'améliorer la précision des Trigs argument Lagre et cela fonctionne bien dans MPFR extremly.

Mais alors j'ai décidé de vérifier les mathématiques simples et il était unbeleavable -. Même dans des exemples simples avec des réponses strictes erreurs d'arrondi existent et ne dépend pas de précision utilisé

Même dans l'exemple comme 1,1 * 1 le résultat est 1,10000000000000008881784 ... Et ce résultat donné à fou précision bit 2000 (53 dans le double normal)!

Peut-être est le problème de mon système, mais même dans MPFR en ligne existe des problèmes similaires. Vous pouvez essayer un tel exemple en ligne: http: //ex-cs.sist .ac.jp / ~ tkouya / try_mpfr.html

1 * 1,1 @ 64 bits = 1,10000000000000000002

Mais la version en ligne se déplace encore avec une augmentation erreur de précision mais dans mon installation -. Pas

Mon système: Ubuntu 9.10 + gmp 5.0.0.1 + mpfr 2.4.2

Était-ce utile?

La solution

Cela semble être la réponse canonique à virgule flottante problèmes de précision . Il comprend une explication des raisons pour lesquelles plus de bits ne résout pas le problème.

Old réponse

Voir la question 7 de RPPM FAQ. Quoi qu'il en soit, il y aura toujours une erreur, puisque de nombreux chiffres ne sont pas exactement représentable avec mantisses binaires, peu importe le nombre de bits que vous utilisez. Voir cette réponse à une question connexe SO pour une bonne explication.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top