我正在编写一些C代码,用于将浮点数重复向上和向下舍入到整数值。标准的C数学库包括函数floor()
和ceil()
。 我注意到更快的实现这些函数的方法是直接转换为整数:
int up, down;
float test = 1.3548;
up = (int)(test + 1); //ceil()
down = (int)test; //floor()
我做了一个快速的检查,这看起来运行良好。
- 如果我需要结果作为整数作为数组索引(即它是否总是返回正确的结果),这是舍入上下的可靠方法吗?
- 这种方法为什么速度明显增加?(在我的系统上,它比math.h实现运行约快3倍)
test
为整数值(如4.0
)的情况。此时floor(x) == ceil(x)
,但您的代码将返回up = 5; down = 4
。请您注意不要改变原文意思。 - njuffaup =(int)(test + 0.5)
-好好想想... - twalbergfloor()
和ceil()
将不再缓慢。 - Mysticial