【发布时间】:2014-06-26 22:03:13
【问题描述】:
我遇到过这种矢量/标量除法实现:
public static Vector2 operator /(Vector2 value1, float divider)
{
float factor = 1 / divider;
value1.X *= factor;
value1.Y *= factor;
return value1;
}
我尝试通过简单的划分来实现它:
public static Vector2 operator /(Vector2 value1, float divider)
{
return new Vector2(value1.X / divider, value1.Y / divider);
}
我尝试运行模拟,结果似乎略有不同。
这是提高计算精度的某种技巧吗?
【问题讨论】:
-
有什么不同的结果?
-
结果不会被正确四舍五入,但通常保存除法的加速比结果精度损失更重要。 (如果你使用这个技巧,结果会更糟,而不是更好。)
-
你能发布一个具体的例子吗?我希望简单的除法能够给出最精确的答案,而乘法版本的舍入误差会稍大一些,但是查看特定情况可以对其进行检查。
标签: c# .net math floating-point floating-point-precision