2

boost::multiprecision::int128_tからに変換する必要がありdoubleます。

小さい int の場合は、次を使用します。

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

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 に答える