gpt4 book ai didi

c++ - 将 boost::multiprecision 实数转换为整数

转载 作者:太空狗 更新时间:2023-10-29 23:17:14 26 4
gpt4 key购买 nike

我正在尝试转换 boost::multiprecision::cpp_dec_float_xboost::multiprecision::uintx_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 的 float 。我需要多少位数?正是256*log_10(2) ~= 77 .所以一个 100 位的 float 就足够了。因此,如果我将实数保持在 2^256 以下,我可以将其转换为 256 位整数。

考虑到convert_to<>,我该如何进行转换?只能与内置类型和 static_cast<> 一起使用引发错误(考虑到 boost documentation 没有提到这样的上下文,这是预期的)?谢谢

不关心数据丢失

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

最佳答案

不知道这是不是你要找的,试试...

cpp_dec_float_100 myreal(100);
cpp_dec_float_100 int_part = myreal.backend().extract_integer_part();

类型仍然是cpp_dec_float_100,但只包含整数部分。我希望这会有所帮助。

关于c++ - 将 boost::multiprecision 实数转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19140200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com