浮点数计算精度:除法与乘法

Den*_*Den 1 .net c# math floating-point floating-point-precision

我遇到过这个向量/标量划分实现:

public static Vector2 operator /(Vector2 value1, float divider)
{
    float factor = 1 / divider;
    value1.X *= factor;
    value1.Y *= factor;
    return value1;
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过简单的divison实现它:

public static Vector2 operator /(Vector2 value1, float divider)
{
    return new Vector2(value1.X / divider, value1.Y / divider);
}
Run Code Online (Sandbox Code Playgroud)

我尝试运行模拟,结果似乎略有不同.

这是一种提高计算精度的技巧吗?

wes*_*ton 10

不,这只是为了让它更快,因为乘法通常比分频更快.

我应该使用乘法还是除法?

1分和2乘以2分可能并不总是更快,但几乎可以肯定.

如果向量是3维或更多维度,我会更加确信它是值得的,但总是对这些微观优化进行描述.

额外操作的舍入错误导致不同的结果.

  • @weston:显然是Haswell的表格(http://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29). (2认同)