相关疑难解决方法(0)

为什么FLT_MIN等于零?

limits.h指定非浮点数学类型的限制,例如INT_MININT_MAX.这些值是您可以使用int表示的最负面和最正面的值.

float.h有相关定义FLT_MINFLT_MAX.如果您执行以下操作:

NSLog(@"%f %f", FLT_MIN, FLT_MAX);
Run Code Online (Sandbox Code Playgroud)

您将获得以下输出:

FLT_MIN = 0.000000, FLT_MAX = 340282346638528859811704183484516925440.000000
Run Code Online (Sandbox Code Playgroud)

FLT_MAX等于一个非常大的数字,正如你所料,但为什么FLT_MIN等于零而不是一个非常大的负数?

c floating-point numeric-limits

27
推荐指数
2
解决办法
2万
查看次数

为什么FLT_MAX和FLT_MIN不是正的和负的无穷大,它们的用途是什么?

从逻辑上讲,给定浮点值的性质,a的最大和最小可表示值float分别为正和负无穷大.

那么,为什么FLT_MAXFLT_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,但这不是重点.重点是模式.)

c c++

15
推荐指数
4
解决办法
3万
查看次数

标签 统计

c ×2

c++ ×1

floating-point ×1

numeric-limits ×1