2

我需要从 转换boost::multiprecision::int128_tdouble

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

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 ....

4

2 回答 2

2

试试 convert_to 方法。

boost::multiprecision::int128_t some128Int = 141324;
double someDoubleNumber = some128Int.convert_to<double>();
于 2013-07-24T19:32:42.350 回答
1

根据约翰·马多克(在提升用户列表上回答)

C++03的方式是:

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

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

于 2013-07-25T19:51:29.080 回答