为什么round()和ceil()不返回一个整数?

有一段时间,我发现自己四舍五入一些数字,我总是不得不把结果投给一个整数:

int rounded = (int) floor(value); 

为什么所有舍入函数( ceil()floor() )返回一个浮点数,而不是一个整数? 我觉得这非常不直观,并希望有一些解释!

这些函数返回的整数值可能太大而不能存储在整型(int,long等)中。 为避免产生未定义结果的溢出,应用程序应将返回值分配给整数types之前执行范围检查。

从ceil(3)Linux man page。

那是因为float的范围比int的宽。 如果这些函数返回的值不适合int你会期望得到什么结果? 这将是未定义的行为,你将无法检查你的程序。