Машинное эпсилон float в C++
Машинное эпсилон у float
описывает минимальный шаг вблизи единицы.
Значение лежит в std::numeric_limits<float>::epsilon
из <limits>. Это наименьшее положительное число, которое
при прибавлении к 1.0f дает результат,
отличный от единицы. Запишем его и выведем:
#include <limits>
#include <iostream>
std::cout << std::numeric_limits<float>::epsilon() << "\n";
Чем меньше эпсилон, тем плотнее числа
вблизи 1.0f. Сравним сумму
1.0f с эпсилоном и без него:
#include <limits>
#include <iostream>
float unit = 1.0f;
float step = std::numeric_limits<float>::epsilon();
std::cout << (unit + step != unit) << "\n";
Выведите epsilon для float
через std::numeric_limits.