【发布时间】:2013-05-04 09:48:16
【问题描述】:
在 C 语言中工作,我想将浮点数舍入为其劣奇整数和劣偶整数。 解的速度很重要(因为每秒计算2M*20次)。
我提出这个解决方案:
x_even = (int)floor(x_f) & ~1;
x_odd = ((int)ceil(x_f) & ~1) -1;
我认为弱点是 floor 和 ceil 操作,但我什至不确定。
有人对此解决方案有意见吗?我对它的执行速度很感兴趣,但如果您有其他解决方案要分享,我将非常乐意对其进行测试:-)。
【问题讨论】:
-
那么分别将 1.5 舍入到 1 和 0? -0.5 到 -1 和 -2,对吗?
-
我认为如果不将其称为“四舍五入”会更有意义。这是一个定义合理的计算(尽管对于 NaN 和超出范围
INT_MIN到INT_MAX的值应该怎么做?) -
其实我今天才读到这个。可能很有趣。 blog.frama-c.com/index.php?post/2013/05/02/nearbyintf1
-
x_f实际上是数组中的值吗?您使用的是具有相当现代处理器( -
我对您的解决方案有疑问。 x_f 为 4.0 时,x_even 为 4,而 x_f 为 5.0 时,x_odd 为 3。真的是你想要的吗?
标签: c++ c optimization floating-point ceil