Класс numeric_limits
Класс numeric_limits является шаблонным классом, который
предоставляет стандартизированный способ получения информации
о свойствах арифметических типов данных. Он позволяет узнать
максимальное и минимальное значение типа, количество значащих
цифр, наличие знака, бесконечности и многое другое.
Специализации этого класса существуют для всех фундаментальных
типов: int, float, double, char и других.
Синтаксис
#include <limits>
numeric_limits<T>::member
Где T - это тип данных, для которого запрашивается
информация. Доступ к членам класса осуществляется через
оператор ::.
Пример
Давайте получим максимальное и минимальное значение
для типа int:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << "Max int: " << numeric_limits<int>::max() << endl;
cout << "Min int: " << numeric_limits<int>::min() << endl;
return 0;
}
Результат выполнения кода:
"Max int: 2147483647"
"Min int: -2147483648"
Пример
Давайте проверим, является ли тип double
знаковым и содержит ли он бесконечность:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << "Is signed: " << numeric_limits<double>::is_signed << endl;
cout << "Has infinity: " << numeric_limits<double>::has_infinity << endl;
return 0;
}
Результат выполнения кода:
"Is signed: 1"
"Has infinity: 1"
Пример
Давайте получим значение эпсилон для типа float,
которое представляет собой минимальную разницу между
двумя различными числами:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << "Epsilon float: " << numeric_limits<float>::epsilon() << endl;
return 0;
}
Результат выполнения кода:
"Epsilon float: 1.19209e-07"