2013-07-24 3 views
1

Мне нужно преобразовать из boost::multiprecision::int128_t в double.convert boost :: multiprecision integer to builtin float type (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 от типа ....

ответ

1

Попробуйте конвертировать_to met корыто.

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

По словам Джона Maddock (ответил на пользователей, повышающих список)

C++ 03 способ:

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

В C++ 11 вы можете просто использовать static_cast (явное конвертер).