ceil() и floor() как раз возвращает флоат-типы. не понимаю в чём проблемма...
Как раз таки нет там float-а, там стоит double, как в качестве возвращаемого значения, так и в качестве параметра. И так почти во всех математических функциях с вещевственными числами, float вместо double в них я ни разу не видел.
флоат-тип
ы - подразумевал float, double, long double
Cишная - да принимает только double, однако в C++, как и многие други, она (std::floor()) перегружена для всех этих типов.