Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将boost::multiprecision integer转换为内置浮点类型(双精度)_Boost_Arbitrary Precision - Fatal编程技术网

将boost::multiprecision integer转换为内置浮点类型(双精度)

将boost::multiprecision integer转换为内置浮点类型(双精度),boost,arbitrary-precision,Boost,Arbitrary Precision,我需要从boost::multiprecision::int128\u t转换为double 对于较小的整数,我使用: template<typename flt_t> flt_t as_flt() const { return std::ldexp (static_cast<flt_t>(val), -frac_bits); } 模板 flt_t as_flt()常量{return std::ldexp(static_cast(val),-frac_bits);}

我需要从
boost::multiprecision::int128\u t
转换为
double

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

template<typename flt_t>
  flt_t as_flt() const { return std::ldexp (static_cast<flt_t>(val), -frac_bits); }
模板
flt_t as_flt()常量{return std::ldexp(static_cast(val),-frac_bits);}
使用
val=int128\u t,flt\u t=double

但是
static\u cast(int128\u t)

似乎失败了


错误:从类型转换的静态\u无效…

请尝试convert\u to方法

boost::multiprecision::int128_t some128Int = 141324;
double someDoubleNumber = some128Int.convert_to<double>();
boost::multiprecision::int128\u t some128Int=141324;
double someDoubleNumber=some128Int.convert_to();
根据John Maddock(在boost用户列表中回答)

C++03的方法是:

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

i如何对转换后的值进行舍入?