在C ++中获得最小的NEGATIVE浮点值

时间:2010-08-20 08:47:17

标签: c++ stl floating-point

我看着std::numeric_limits<float>::min/max(),但看起来'min()'返回的是最小的绝对值,而不是最低的值。使用是否安全

-std::numeric_limits<float>::max(),即在最小/最大限制中浮动对称?

3 个答案:

答案 0 :(得分:27)

IEEE 754浮点数使用符号位进行签名(而不是二进制补码),所以如果您确定您的编译器/平台使用该表示(非常常见),那么您可以使用{{1你怀疑的那样。

答案 1 :(得分:24)

使用std :: numeric_limits :: lowest()

static _Ty __CRTDECL lowest() _THROW0()
    {   // return most negative value
    return (-(max)());
    }

答案 2 :(得分:4)

是的,float在最小/最大值方面是对称的。

如果您在搜索列表的最大值时使用最低可表示值作为初始值,请考虑使用无穷大。

std::numeric_limits<T>::has_infinity()将为包含它的任何数字类型返回truestd::numeric_limits<T>::infinity()将返回一个值,该值的值总是大于该类型的任何其他非NaN值。这个值可以否定,并且评估的价值低于其他任何值。