Je souhaite déclarer une variable à virgule flottante qui peut stocker des chiffres plus significatifs que les doubles les plus communs et long double, de préférence quelque chose comme un octuple (256 bits), que (je crois) pourrait donner environ 70 chiffres significatifs.Déclarant une variable à virgule flottante précision octuple en C++
Comment déclarer une telle variable? Et la compatibilité multi-plateforme sera-t-elle un problème (par opposition aux entiers à largeur fixe)?
Toute aide est très appréciée.
Oui, ce sera un problème car aucun type de données de ce type n'est spécifié dans la norme C++. Il y a des bibliothèques "bignum" que vous pouvez trouver si vous recherchez un peu, et qui peuvent le manipuler de façon portable (au moins pour la source, et si la sérialisation en texte). –
Il est extrêmement peu probable que votre compilateur offre une précision octuple. Il peut offrir précision quad avec une syntaxe pratique et quelques-unes des fonctionnalités manquantes (émulé dans le logiciel, https://stackoverflow.com/questions/5451447/quadruple-precision-in-c-gcc), mais il est également possible que ce n'est pas le cas. Si vous êtes prêt à utiliser une bibliothèque externe, MPFR est un bon choix: http://www.mpfr.org –
Il convient de reconsidérer si vous avez réellement besoin que beaucoup de précision: Pratiquement toutes les tâches de calcul peut être fait avec * largement * moins de précision . Certaines tâches où vous rencontrez des problèmes de stabilité arithmétique de très petits nombres peuvent être mieux résolues en travaillant dans l'espace du journal. Et enfin, il serait peut-être préférable de faire évoluer votre calcul pour qu'il fonctionne à la place sur des entiers. –