说我有这个号:如何获得提高多精度数字部分?
// bmp = boost::multiprecision
bmp::cpp_dec_float n("123456789.1234567891011121314");
它的后台数据:
[0] 1 unsigned int
[1] 23456789 unsigned int
[2] 12345678 unsigned int
[3] 91011121 unsigned int
[4] 31400000 unsigned int
... 0
[15] 0 unsigned int
这正是我想要得到;不幸的是,我没有找到一种方法来获得我的号码的两个部分,例如bmp::int128_t
- 或我的号码的基础数据。
也就是说,我喜欢这样的事情存在:
bmp::int128_t integerPart;
bmp::int128_t floatPart;
n.getParts(integerPart, floatPart);
或
auto&& data = n.data(); // which is actually private when using `cpp_dec_float`.
反正不会有人知道怎么做我想达到什么目的?
为了记录,我需要这个为了互操作性而将一个十进制数表示为一个C#十进制数。
不是我干的,但'#define'ing关键字是未定义的行为,(几乎?)从来没有一个可靠的解决方案 – 2014-06-23 15:32:45
哦,没有论据。我试图说出最初的答复(以及我对downvote的评论),清楚地表明这不是用于生产的好主意。如果OP真的需要长期的这种能力,那么如果他们不能说服B.MP维护者,他们应该分叉它并将其吸收到它们的代码库中--BPL允许这样做。我只是想提供一个“这是晚上11点,你明天需要它”的解决方案。也许这值得赞扬,不知道。 – AnthonyFoiani 2014-06-25 05:45:44
有趣的轶事:我试图在我现在的公司内部的meme生成器上创建一个“#define private public; NO REGRETS”meme ...只是被重定向到一个*现有的*例子。所以我猜想我并不是这个想法中唯一痴迷的灵魂。 :) – AnthonyFoiani 2014-06-25 05:52:06