为什么round()和ceil()不返回一个整数?
有一段时间,我发现自己四舍五入一些数字,我总是不得不把结果投给一个整数:
int rounded = (int) floor(value);
为什么所有舍入函数( ceil()
, floor()
)返回一个浮点数,而不是一个整数? 我觉得这非常不直观,并希望有一些解释!
这些函数返回的整数值可能太大而不能存储在整型(int,long等)中。 为避免产生未定义结果的溢出,应用程序应将返回值分配给整数types之前执行范围检查。
从ceil(3)Linux man page。
那是因为float
的范围比int
的宽。 如果这些函数返回的值不适合int
你会期望得到什么结果? 这将是未定义的行为,你将无法检查你的程序。