Я думаю, что проблема заключается в том, что когда вы использовали float, вы не меняли scanf и, таким образом, пытались прочитать целочисленное представление в переменную с плавающей запятой, так как они имеют тот же размер, что и подойдет, но, как справедливо указывает Дэвидиз них они используют 32 бита совершенно по-разному.
Если вы правильно прочитаете значение в Float, ответ будет таким же.
Вам также нужно будет изменить printf.