从逻辑上讲,给定浮点值的性质,a的最大和最小可表示值float分别为正和负无穷大.
那么,为什么FLT_MAX而FLT_MIN不是他们呢?我知道这是"标准要求的方式".但是,它们可以或者具有什么用途,因为它们目前位于可表示的数值范围的中间FLT_MAXFLT_MINfloat?其他数字限制具有一些实用性,因为它们保证了比较(例如"无INT可以测试大于INT_MAX").没有这种保证,这些浮动限制有什么用?
C++的一个激励范例:
#include <vector>
#include <limits>
template<typename T>
T find_min(const std::vector<T> &vec)
{
T result = std::numeric_limits<T>::max();
for (std::vector<T>::const_iterator p = vec.start() ; p != vec.end() ; ++p)
if (*p < result) result = *p;
return result;
}
Run Code Online (Sandbox Code Playgroud)
如果T是整数类型,则此代码可以正常工作,但如果它是浮点类型则不行.这很烦人.(是的,标准库提供min_element,但这不是重点.重点是模式.)