C++ 将boost::多精度实数转换为整数

C++ 将boost::多精度实数转换为整数,c++,boost,g++,decimal,bigdecimal,C++,Boost,G++,Decimal,Bigdecimal,我正在尝试将一个boost::multiprecision::cpp\u dec\u float\u x转换为一个boost::multiprecision::uintx\u t。所以基本上是一个boost bigreal到一个boost bigint,关于这个转换所需的内存,不会有损。 考虑以下事项: boost::multiprecision::cpp_dec_float_100 myreal(100); /* bigreal */ boost::multiprecision::uint25

我正在尝试将一个
boost::multiprecision::cpp\u dec\u float\u x
转换为一个
boost::multiprecision::uintx\u t
。所以基本上是一个boost bigreal到一个boost bigint,关于这个转换所需的内存,不会有损。 考虑以下事项:

boost::multiprecision::cpp_dec_float_100 myreal(100); /* bigreal */
boost::multiprecision::uint256_t myint; /* bigint */
设计内存分配 我想从第一个转换到最后一个。考虑一下,我一直在计算需要的位数。从一个256位整数开始,我需要一个能够存储0到2^256-1的浮点。我需要多少位数?正好
256*log\u 10(2)~=77
。所以一个100位数的浮点数就足够了。因此,如果我将实数保持在2^256以下,我可以将其转换为256位整数

考虑到
convert\u to
只能与内置类型一起使用,并且
static\u cast
引发错误(考虑到未提及此类上下文,这是预期的),我如何进行转换?谢谢

不关心数据丢失
我不关心数据丢失。出于我的目的,我将(在bigreal变量中)存储一个整数(无小数部分)。所以我很好

我不知道这是不是你要找的,试试看

cpp_dec_float_100 myreal(100);
cpp_dec_float_100 int_part = myreal.backend().extract_integer_part();
类型仍然是cpp_dec_float_100,但只包含整数部分。
我希望这会有所帮助。

“我正在尝试将boost::multiprecision::uintx\t转换为boost::multiprecision::cpp\u dec\u float\u x”-您没有混合这些吗?是的。。。谢谢你的注意…我换了地方。。。。