|
1
10
不幸的是你选了个坏榜样。x86 JIT编译器不内联返回float的方法。不是100%确定为什么,我认为它可以避免当浮点值转换为80位浮点值在FPU的问题。内部精度为80位,但当80位值被截断回32位值时,这些额外的位会被切掉。在FPU中保持值太长会防止发生这种截断并更改计算结果。 如果将float替换为double并编译以下代码:
然后在启用JIT优化器时生成此机器代码:
它不仅内联函数,而且能够在编译时计算表达式。并通过调用Console.WriteLine(8.0)直接传递结果。不错吧? 使用双精度,而不是浮动。 |