我需要将一个非常小的值添加到浮点值以使其差异微不足道,从而使其无法通过相等性测试。
为了避免精度问题,我选择添加一个相对较小的数字,而不是添加一个非常小的数字。这是一个好的解决方案吗?还是有一种可靠的方法来添加更小的数字?
matrix.m00 += matrix.m00 * 0.0000001f;
matrix.m11 += matrix.m11 * 0.0000001f;
matrix.m22 += matrix.m22 * 0.0000001f;
从阅读中我发现最好的解决方案是使用下一个可表示的浮点数。尽管在 C# 中执行此操作的过程要么 a) 需要非托管/不安全代码,要么 b) 使用BitConverter
速度太慢。所以我认为上述解决方案可行,但我想知道是否有任何问题。