首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何初始化一个浮点数到它的最大/最小值?

我如何初始化一个浮点数到它的最大/最小值?
EN

Stack Overflow用户
提问于 2010-04-22 00:09:14
回答 4查看 174.6K关注 0票数 111

如何硬编码浮点数或双精度数的绝对最大值或最小值?我想通过简单地遍历并捕获最大值来搜索出数组的max/min。

浮点数也有正无穷大和负无穷大,我应该用它们来代替吗?如果是这样,我该如何在我的代码中表示呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-22 00:11:17

您可以使用<limits>中定义的std::numeric_limits来查找类型的最小值或最大值(只要存在针对该类型的专门化)。您还可以使用它来检索无穷大(并在前面放一个-来表示负无穷大)。

代码语言:javascript
复制
#include <limits>

//...

std::numeric_limits<float>::max();
std::numeric_limits<float>::min();
std::numeric_limits<float>::infinity();

正如注释中所指出的,min()将返回可能的最低正值。换句话说,可以表示的最接近于0的正值。最低可能值是最大可能值的负数。

当然,std::max_element和min_element函数(在<algorithm>中定义)可能是在数组中查找最大或最小值的更好选择。

票数 165
EN

Stack Overflow用户

发布于 2010-04-22 00:34:26

可以使用-FLT_MAX (或-DBL_MAX)表示最大幅值负数,使用FLT_MAX (或DBL_MAX)表示正值。这为您提供了可能的浮点值(或双精度值)的范围。

您可能不想使用FLT_MIN;它对应于可以用浮点数表示的最小幅度正数,而不是可以用浮点数表示的最负的值。

FLT_MINFLT_MAX对应于std::numeric_limits<float>::min()std::numeric_limits<float>::max()

票数 50
EN

Stack Overflow用户

发布于 2010-04-22 00:17:19

要手动查找数组的最小值,您不需要知道float的最小值:

代码语言:javascript
复制
float myFloats[];
...
float minimum = myFloats[0];
for (int i = 0; i < myFloatsSize; ++i)
{
  if (myFloats[i] < minimum)
  {
    minimum = myFloats[i];
  }
}

和最大值的类似代码。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2684603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档