我正在编写一些C代码,以反复将浮点数向上和向下舍入为整数值。
标准C数学库包括函数floor()
和ceil()
。
我注意到函数的更快实现是直接转换为整数:
int up, down;
float test = 1.3548;
up = (int)(test + 1); //ceil()
down = (int)test; //floor()
我做了一个快速检查,这似乎工作正常。
答案 0 :(得分:7)
函数ceil()
和floor()
将返回与使用
up = (int)(test + 1);
down = (int)test;
当你有一个负数。
如果你有:
float test = -1.3548;
up = (int)test; // ceil()
down = (int)(test-1); // floor()
当floor()
是一个整数时,即使最后一个语句也不是计算test
的好方法。
除非您想以不同的方式处理正数和负数,并且test
为特征的特殊情况是整数,否则最好使用ceil()
和floor()
。