1

我正在使用 boost 多精度库浮点数。我需要将 a 映射gmp_float到 antanh然后将其作为双精度值,因为值为tanhwill [0, 1)。当我使用时,convert_to<double>()我得到编译错误,如下面的代码片段所示。

typedef boost::multiprecision::number<boost::multiprecision::gmp_float<4>> float_type;

float_type previous_v = agent->_velocity(i, j);
float_type sigmapped_v = boost::multiprecision::tanh(previous_v);
double sigmoid_velocity = sigmapped_v.convert_to<double>();
// expected primary-expression before ‘double’ ^^

double v_probable = abs(sigmoid_velocity);

但是明确地将其转换为双重(double)sigmapped_v工作

4

1 回答 1

1

走出困境,您可能处于模板上下文中,并且float_type依赖于模板参数。

您需要在此处给出编译器类型提示:

double sigmoid_velocity = sigmapped_v.template convert_to<double>();
//                                    ^^

如果没有消歧提示,编译器将解析<operator<

另请参阅我必须在哪里以及为什么必须放置“模板”和“类型名称”关键字?

于 2016-08-30T21:23:21.677 回答