在其他一些语言中,您可以允许编译器执行一些浮点优化,其中之一是将您的代码重写为代数等效表达式。以下是我的意思的一些例子:
a = a * a * a * a * a * a * a * a * a * a * a * a * a * a * a * a;
可以优化为
a *= a;
a *= a;
a *= a;
a *= a;
...
b /= 0.123456789f;
b /= 17;
可以优化为
// b *= 1f / (0.123456789f * 17)
b *= 0.47647059257117651004476506493677f;
显然,编译器默认情况下不会这样做,因为优化的表达式会产生不同的结果,我认为您可以将一个属性分配给方法或类来表示您允许进行这些优化,但我不能找到任何东西。