Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
偶尔,我发现自己对一些数字进行了四舍五入,而且我总是必须将结果转换为整数:
int rounded = (int) floor(value);
为什么所有舍入函数 ( ceil(), floor()) 返回一个浮点数,而不是整数?我觉得这很不直观,并且希望有一些解释!
ceil()
floor()
这些函数返回的整数值可能太大而无法存储在整数类型(int、long 等)中。为避免会产生未定义结果的溢出,应用程序应在将返回值分配给整数类型之前对其执行范围检查。
来自 ceil(3) Linux 手册页。
那是因为float' 的范围比int' 更宽。如果这些函数返回的值不适合 ,您会期望得到int什么?那将是未定义的行为,您将无法在程序中检查它。
float
int