Ну, я думаю, вы не будете слишком удивлены, услышав, что сравнение поплавков на равенство - это ошибка новичка.
Проблема в том, что многие приращения, меньшие целочисленных значений, не могут быть точно представлены в IEEE с плавающей запятой. Поэтому, если вы попадаете в число с плавающей точкой, пытаясь «проиндексировать» его до значения 3,0 (скажем, с шагом 0,1), вполне возможно, что ваше сравнение на равенство может никогда не быть истинным.
Это также плохая идея с точки зрения силы типов. Вы должны либо преобразовать число с плавающей точкой в целое число, проверить, что ваше int достаточно близко (например, <3,1 и> 2,9 или что-то подобное), или еще лучше, если вы пытаетесь заставить этот float выполнять двойную функцию для чего-то вроде счетчика. , избегай всей идеи.