获取C++浮点数最大值的跨平台方法

8

在C++中,获取可以存储在float中的最大值的最佳跨平台方法是什么?

5个回答

25

21
std::numeric_limits<float>::max()

9

std::numeric_limits

翻译为:

{{链接1:std::numeric_limits}}

// numeric_limits example
#include <iostream>
#include <limits>
using namespace std;

int main () {

  cout << "Minimum value for float: " << numeric_limits<float>::min() << endl;
  cout << "Maximum value for float: " << numeric_limits<float>::max() << endl;
  cout << "Minimum value for double: " << numeric_limits<double>::min() << endl;
  cout << "Maximum value for double: " << numeric_limits<double>::max() << endl;
  return 0;
}

2
需要注意的是,对于浮点类型,调用min()函数返回的是最小正值,而不是最小值。这是有很大区别的。 - James McNellis

1

在C++中,您可以使用std::numeric_limits类来获取这种类型的信息。

如果has_infinitytrue(现在基本上所有平台都是真的),那么您可以使用infinitity来获得大于或等于所有其他值(除了NaN)的值。同样,它的否定将给出一个负无穷大,并且小于或等于所有其他值(再次排除NaN)。

如果您想要有限的值,则可以使用min/max(它们将小于或等于/大于或等于所有其他有限值)。


-1
#include <float.h>

然后使用FLT_MAX


标准库头文件最好不要带扩展名导入。请参考此SO问题https://dev59.com/sHRC5IYBdhLWcg3wAcM3进行了解。 - Francesco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接