Почему float переменные не равны?
Они и не могут быть равны по дизайну. 
Используйте функции для сравнения именно чисел с плавающей точкой
https://www.php.net/manual/en/language.types.float.php
Используйте специальные функцию bccomp
Все потому что в памяти вещественны числа имеют приближенной значение. Такая проблема есть и в javascript
Так что лучше используйте это https://www.php.net/manual/ru/ref.bc.php для работы с вещественными числами.
Вот пример, который на собеседовании могут использовать
$a = 0.1 + 0.1;
$b = 0.3 - 0.1;
var_dump([$a, $b]); // float(0.2) float(0.2)
var_dump($a === $b); // false