Makes sense, how would you represent floor(1e42) or ceil(1e120) as integer? It would not fit into 32bit (unsigned) or 31bit (signed) integer. Not even into 64bit integer.
I feel this is worse than double though because it's a library type rather than a basic type but I guess ceil and floor are also library functions unlike toInt