Сравнивать числа с плавающей точкой через оператор == неверно, поскольку многие рациональные числа в формате float (и double тоже) не представимы точно. Поэтому можно наблюдать ситуацию, когда, к примеру, ожидаемое 3 == 3 вернет false, поскольку в одном операнде на самом деле 2.999998 а во втором 3.000004.
Если Вы знаете ожидаемый порядок чисел, неплохим выходом будет сравнение разницы чисел с некоторой величиной точности.
Что-то вроде:
bool IsFpNumsEqual(float a, float b, float eps = 1.0E-5f) => Math.Abs(a - b) < eps;
За подробностями прошу в статью
на Хабре