Bry*_*man 0 c++ math floating-point
我正在进行一些计算,当我期待{-0.707107,0,0.707107}时,会产生类似{-0.707107,9.61481e-017,0.707107}的值.第二个组成部分,虽然基本上为零,但会导致问题吗?我该怎么办呢?使用C++加倍.
这在很大程度上取决于你打算做什么.:-)然而,获得与"数学"结果应该非常接近但不完全相等的结果是使用浮点数时必须要考虑的事情.一个常见的解决方案是定义一些"epsilon"值(比如说1e-10),并接受epsilon所有比较中的错误- 所以x == y会变成fabs(x - y) < epsilon.
如果你(a)进行数值不稳定的计算(你可能不是),或者(b)稍后会尝试使用严格相等来比较它们,它们只会"引起问题".在一般情况下,你不应该"做什么"这个问题,你应该确保你的算法是不是不精确少量过于敏感.