Ich vermute, dass Sie wahrscheinlich% verwenden können co_de%, die Werte zu erhalten, die Sie suchen, obwohl Sie noch prüfen werden, dass sie den C # Dezimal Typ passen. Siehe hierzu das Handbuch zu den Boost.Multiprecision-Backend-Anforderungen:
Ссылка
Sie können immer nur die Langhand-Mathematik und die Bereichsüberprüfung durchführen; Wenn Sie nicht zu viele Zahlen übertragen, könnte dies schnell genug sein.
Nachdem Sie all das gesagt haben, können Sie gerne unartig sein und etwas wie:
tun
%Vor%
Aber wenn es in einer zukünftigen Veröffentlichung bricht, kannst du beide Teile behalten.
Hey, danke für den Kommentar ohne Kommentar. Das ist sehr hilfreich.
Um meine obigen Kommentare zu verdeutlichen:
Mit eval_frexp
: nach weiterer Forschung, scheint es, dass das eval_frexp
nach wie vor nur Potenzen von 2 bietet, nicht Potenzen von 10, wie scheint für das eval_frexp(b, cb, pi)
Typen benötigt werden. So vermute ich, dass Sie die Arithmetik in langer Form ausführen müssen, wenn Sie nur die öffentliche Schnittstelle verwenden möchten.
Missbrauch von Decimal
-Members: Die Autoren und Betreuer der Boost.Multiprecision-Klassen haben sie nach bestimmten Richtlinien entworfen; Offensichtlich haben sie die Zukunftssicherheit für wichtiger gehalten als den Zugang zur internen Struktur:
Klassenvorlage cpp_dec_float erfüllt alle Anforderungen für einen Backend-Typ. Seine Mitglieder- und Nichtmitgliedsfunktionen sind absichtlich nicht dokumentiert: es handelt sich um Implementierungsdetails, die sich ändern können. ( Ссылка )
Mein Vorschlag, die eindeutig als „frech“ und mit der Warnung markiert wurde, dass es wahrscheinlich in einer zukünftigen Version brechen würde, war die Design-Anforderungen des OP vor denen des Autor von B.MP zu verhängen.
Die sauberste Methode könnte darin bestehen, eine Änderung an der Klasse private
vorzuschlagen, bei der die interne Struktur offengelegt wird; Angesichts eines überzeugenden Anwendungsfalls und einer Analyse, inwieweit sich der Code historisch geändert hat oder nicht, könnte er sogar akzeptiert werden.
Hoffe, das hilft. Wenn der Leser mit ihr noch Fragen haben, wenden Sie sich bitte an downvote, aber bitte lassen Sie mich wissen, welcher Teil stört Sie so kann ich versuchen, es zu verbessern.