c ++将无穷大转换为max,将-inf转换为min

bar*_*rej 0 c++ double boost c++11

如何实施以下行动?

if( boost::math:: +is_inf (x) )
    x= max double;
else if( boost::math:: -is_inf (x) )
    x= min double;
Run Code Online (Sandbox Code Playgroud)

我想保留x的符号.

gal*_*tte 5

这里的关键是,你可以比较+inf-inf0与<>,所以测试标志是非常容易的.

if(std::isinf(x))
{
    if(x>0)
        x = std::numeric_limits<double>::max();
    else
        x = -std::numeric_limits<double>::max();
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是c ++ 11,则无需提升