Windows中C99 lrint函数的正确替代方法是什么?

#define lrint(x) (floor(x+(x>0) ? 0.5 : -0.5))

/* and if fesetround(0) behavior is required*/

#define lrint(x) ((int)(x))

那是对的吗?

最佳答案

lrint没有[简单]单一定义即可执行C99标准定义的行为。这是因为lrint的行为是由对 fesetround 的单独调用控制的。相反,应针对应用程序的期望行为使用具有保证语义的单独舍入函数。

08-20 04:30