Поле epsilon
Поле epsilon класса numeric_limits возвращает
машинную эпсилон для типа с плавающей точкой. Машинная эпсилон -
это разница между единицей и ближайшим к ней числом, которое
может быть представлено в данном типе. Иными словами, это
минимальное положительное число 'x', такое что
1.0 + 'x' не равно 1.0. Поле не принимает
параметров и возвращает значение типа T, где T -
тип, для которого запрашивается информация. Для целочисленных
типов значение всегда равно 0.
Синтаксис
numeric_limits<T>::epsilon()
Пример
Давайте выведем значение машинной эпсилон для типа
double:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
double eps = numeric_limits<double>::epsilon();
cout << eps << endl;
return 0;
}
Результат выполнения кода:
2.22045e-16
Пример
Давайте сравним значения epsilon для типов
float и double:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
float epsf = numeric_limits<float>::epsilon();
double epsd = numeric_limits<double>::epsilon();
cout << "float: " << epsf << endl;
cout << "double: " << epsd << endl;
return 0;
}
Результат выполнения кода:
"float: 1.19209e-07"
"double: 2.22045e-16"
Пример
Давайте проверим, что для целочисленного типа значение
epsilon равно 0:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int eps = numeric_limits<int>::epsilon();
cout << eps << endl;
return 0;
}
Результат выполнения кода:
0
Смотрите также
-
класс
numeric_limits,
который предоставляет информацию о типах -
поле
min,
которое возвращает минимальное положительное значение -
поле
max,
которое возвращает максимальное значение типа -
поле
digits,
которое возвращает количество бит мантиссы