C++将无穷大转换为最大值并将-inf转换为最小值

标签 c++ c++11 boost double

如何实现下面的 Action ?

if( boost::math:: +is_inf (x) )
    x= max double;
else if( boost::math:: -is_inf (x) )
    x= min double;

我想保留 x 的符号。

最佳答案

这里关键是,大家可以比较+inf-inf到 0 <> ,所以测试标志非常容易。

if(std::isinf(x))
{
    if(x>0)
        x = std::numeric_limits<double>::max();
    else
        x = -std::numeric_limits<double>::max();
}

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

关于C++将无穷大转换为最大值并将-inf转换为最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853392/

相关文章:

c++ - 从文件中读取并在 C++ 中转换为 double

c++ - 双重构造是未定义的行为吗?

c++ - 为什么 C++ Lambda 表达式不工作

c++ - 重构仅在最内层范围内不同的多个重复函数

c++ - 如何从 qi::double_ 转换为字符串?

c++ - 在 gcc 编译器中禁用特定优化(死代码消除)

c++ - 如果第一个操作数是常量表达式,则类型为 '?:'

c++ - 如何在基于 CMake 的项目中使用 Boost.Test?

python - 使用 boost::python 将虚拟成员函数从 C++ 公开到 Python

c++ - 在 If 语句中分配变量 [C++]