2

我正在编写一个函数来影响控件的感觉,发现除以 15.9 是正确的。我的本能是将其更改为除以 16,因为编译器可以将其优化为移位操作。然而,在这种情况下,该值是一个浮点数。浮点除法中有最优除数吗?

4

2 回答 2

2

为什么不乘以 0.0628930818 呢?如果除以 15.9 是“大约正确”,那么乘以倒数虽然可能不完全准确到最后一位小数,但仍然是“大约正确”。如果使用一些“许可数学”标志,优化编译器甚至可能会自动执行此操作(通常,这是严格不允许的,因为它可能会丢失一些精度)。

无论如何,它比除以 16 更准确。而且,它不像篡改指数位那样是一种黑客行为。

于 2012-10-09T12:48:38.747 回答
0

将浮点数除以 16 也很容易。您只需将指数减 4。但我认为编译器不会在此处进行任何优化,因为它还必须检查下溢。

需要明确的是:我不建议直接操作指数位。我只是想指出,可能最快的除数float也是 2 的幂。

于 2012-10-09T09:11:42.047 回答