Возможный дубликат:
Почему Math.Floor(Double) возвращает значение типа Double?
Почему С# Math.Floor() возвращает double вместо int
В Документах MSDN:
Возвращает наибольшее целое число, меньшее или равное указанному числу с плавающей запятой с двойной точностью
он говорит, что возвращает целое число. Его нормально возвращать double, я всегда могу отнести его к int, но его просто довольно странно, не так ли?