Можете ли вы сравнить число с плавающей точкой и целое число? Но проблема, с которой вы столкнетесь, заключается в точности. В большинстве реализаций C / C ++ float и int имеют одинаковый размер (4 байта) и дико разные уровни точности. Ни один тип не может содержать все значения другого типа. Поскольку один тип не может быть преобразован в другой тип без потери точности, а типы не могут быть сравнимы по натуре, выполнение сравнения без учета другого типа приведет к потере точности в некоторых сценариях.
То, что вы можете сделать, чтобы избежать потери точности, - это преобразовать оба типа в тип, который имеет достаточную точность для представления всех значений float и int. На большинстве систем double сделает именно это. Таким образом, следующее обычно делает сравнение без потерь
float f = getSomeFloat();
int i = getSomeInt();
if ( (double)i == (double)f ) {
...
}