dire que j'ai ce numéro em>: ses données de backend sont les suivantes: p> ce qui est exactement Ce que je veux obtenir; Malheureusement, je ne trouve pas de moyen d'obtenir des deux parties de mon numéro comme C'est-à-dire que j'aime quelque chose comme ça existe: p> ou p> quand même, quelqu'un connaît-il comment faire Ce que j'essaie d'atteindre? p> Pour le dossier, j'ai besoin de cela pour exprimer un grand nombre décimal comme une décimale C # pour le souci d'interopérabilité. P> P> BMP :: int128_t code> - pour l'instance-- ou les données sous-jacentes de mon numéro. P>
3 Réponses :
Je soupçonne que vous pouvez probablement utiliser Vous pouvez toujours faire la vérification des mathématiques et de la gamme de Longhand; Si vous ne transférez pas trop de chiffres, cela pourrait être assez rapide. P> Ayant dit tout cela, vous êtes la bienvenue pour être méchant et faire quelque chose comme: P> eval_frexp code> pour obtenir les valeurs que vous recherchez, même si vous devez toujours vérifier qu'elles entrent dans le type décimal C #. Voir le manuel sur Boost.Multiprecision Backend Exigences ici:
http: //www.boost .ORG / DOC / LIBS / 1_53_0 / LIBS / MULTIPRÉCISION / DOC / HTML / BOOST_MULTIPRÉCISION / REF / BACKENDCONC.HTML
#define private public
#define protected public
#include <boost/multiprecision/cpp_dec_float.hpp>
#undef private
#undef protected
Ce n'était pas moi, mais #define code> ing est un comportement indéfini et (presque?) Jamais une solution solide aux problèmes
Oh, aucun argument là-bas. J'ai essayé de formuler la réponse originale (et mon commentaire snarky sur le bowvote) pour être clair que ce n'est pas une bonne idée d'utilisation de la production. Si le OP a vraiment besoin de cette capacité à long terme, alors s'ils ne peuvent pas convaincre les responsables B.MP, ils devraient simplement le fourrer et le sucer dans leur base de code - le BPL permet à cela. J'essayais juste d'offrir un "c'est 23h et tu en as besoin demain" solution. Peut-être que ça vaut un bowvote, Dunno.
Anecdote amusante: J'ai essayé de créer un "public privé #define; pas de regrets" meme sur le générateur de meme interne de ma société actuelle ... seulement être redirigé vers un exemple existant i>. Donc, je suppose que je ne suis pas la seule âme démente avec cette idée. :)
Je ne sais pas si vous recherchez, essayez ... Le type est toujours cpp_dec_float_100, mais ne contient que la partie entière.
J'espère que cela vous aidera. P> p>
de la documentation Boost L'extrémité arrière est intentionnellement opaque car elle peut changer à tout moment sans avertissement. ( Autant que je puisse voir, vous avez deux choix ici. Vous pouvez consulter le code source de la version spécifique de la classe Backend que vous utilisez, l'accédez à partir de votre numéro Alternativement, je vous recommanderais de prendre la représentation des chaînes du Modèle de classe CPP_Dec_Float remplit toutes les exigences relatives à un type de backend. Ses membres et ses fonctions non membres sont délibérément non documentés: ils sont considérés comme des détails de mise en œuvre soumis à des modifications. code>) de http://www.boost.org/doc /Libs/1_55_0/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html p>
code> à l'aide de la méthode
Backend code> et espérons que le backend ne jamais changements (en particulier envisagez des modifications qui ne cassèrent que le format binaire et non la compilation). P>
cpp_dec_float CODE> et divisez-la dans les deux parties vous-même, à l'aide de la chaîne
code> ou
char * code > Constructeurs pour les types intégraux sous-jacents qui vous intéressent. P>
+1, avec la note supplémentaire que la licence publique de Boost permet de copier presque toute utilisation, y compris commerciale. Si la représentation interne si une version est exactement ce que les besoins OP / veut, alors si les propriétaires de Boost.MultiPrecision ne peuvent pas être convaincus de geler une mise en œuvre, l'OP peut geler eux-mêmes.