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
的单独调用控制的。相反,应针对应用程序的期望行为使用具有保证语义的单独舍入函数。