📌  相关文章
📜  std :: numeric_limits之间的区别<T>C++中的最小,最大和最低(1)

📅  最后修改于: 2023-12-03 14:47:42.682000             🧑  作者: Mango

C++ 中的 std::numeric_limits

C++ 中的 std::numeric_limits 可以让我们访问到一个数值类型的极值及各种属性特征,如是否是整数类型,是否包含 NaN 值,以及运算精度等等。本文将介绍其中的三个重要特性:最小值、最大值、最低值。

最小值

std::numeric_limits<T>::min() 返回 T 类型的最小有限值,即一个 T 类型的实例可能具有的最小值。

对于整数类型,返回的是负最大值。

对于浮点数类型,返回的是最小值,即满足 std::numeric_limits<T>::epsilon() < 1 的最小正数。

以下是一个示例代码:

#include <iostream>
#include <limits>

using namespace std;

int main() {
    cout << "Min value of int: " << numeric_limits<int>::min() << endl;
    cout << "Min value of double: " << numeric_limits<double>::min() << endl;

    return 0;
}

输出结果:

Min value of int: -2147483648
Min value of double: 2.22507e-308
最大值

std::numeric_limits<T>::max() 返回 T 类型的最大值,即一个 T 类型的实例可能具有的最大值。

对于整数类型,返回的是正最大值。

对于浮点数类型,返回的是最大值,即满足 std::numeric_limits<T>::epsilon() < 1 的最大正数。

以下是一个示例代码:

#include <iostream>
#include <limits>

using namespace std;

int main() {
    cout << "Max value of int: " << numeric_limits<int>::max() << endl;
    cout << "Max value of double: " << numeric_limits<double>::max() << endl;

    return 0;
}

输出结果:

Max value of int: 2147483647
Max value of double: 1.79769e+308
最低值

std::numeric_limits<T>::lowest() 返回 T 类型的最低值,即一个 T 类型的实例可能具有的最小值,包括可能的负无穷大和非限定的 NaN 值。

对于整数类型和浮点数类型,std::numeric_limits<T>::lowest() 返回的都是负最大值。

以下是一个示例代码:

#include <iostream>
#include <limits>

using namespace std;

int main() {
    cout << "Lowest value of int: " << numeric_limits<int>::lowest() << endl;
    cout << "Lowest value of double: " << numeric_limits<double>::lowest() << endl;

    return 0;
}

输出结果:

Lowest value of int: -2147483648
Lowest value of double: -1.79769e+308

以上即为 C++ 中 std::numeric_limits 的三个重要特性:最小值、最大值和最低值。通过这些特性,我们可以更好地了解一个数值类型的特性,以及在开发中更精准地选择数据类型。