将boost :: multiprecision整数转换为内置浮点类型(double)

时间:2013-07-24 18:53:03

标签: boost arbitrary-precision

我需要从boost::multiprecision::int128_t转换为double

对于较小的整数,我使用:

template<typename flt_t>
  flt_t as_flt() const { return std::ldexp (static_cast<flt_t>(val), -frac_bits); }

val=int128_t, flt_t = double

但是static_cast<double>(int128_t)

似乎失败了

错误:类型....的static_cast无效。

2 个答案:

答案 0 :(得分:2)

尝试使用convert_to方法。

boost::multiprecision::int128_t some128Int = 141324;
double someDoubleNumber = some128Int.convert_to<double>();

答案 1 :(得分:0)

根据John Maddock(在提升用户名单上回答)

C ++ 03方式是:

cpp_int i = 1;
i <<= 128;
double d = i.convert_to<double>();

在C ++ 11中,您可以使用static_cast(显式转换运算符)。