我正在做一些计算,当我期望{-0.707107,0,0.707107}时,得出的值类似于{-0.707107,9.61481e-017,0.707107}。第二个成分虽然基本为零,但会在将来引起问题吗?我应该为此做些什么吗?使用C ++双打。

最佳答案

这在很大程度上取决于您打算在将来做什么。 :-)但是,使用浮点数必须获得与“数学”结果非常接近但不完全相等的结果。常见的解决方案是定义一些“ε”值(例如1e-10),并在所有比较中接受epsilon的错误-因此x == y将变为fabs(x - y) < epsilon

10-02 21:33