在其他一些语言中,您可以允许编译器执行一些浮点优化,其中之一是将代码重写为代数等价表达式。以下是我的意思的一些示例:
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;
显然,编译器在默认情况下不会这样做,因为优化的表达式会产生不同的结果,我认为您可以将一个属性分配给方法或类来表示您允许进行这些优化,但是我找不到任何东西。