c ++循环浮点数来设置精度

Myx*_*Myx 2 c++ floating-point precision

我希望舍入浮点数来设置精度并从函数返回结果.例如,我目前有以下功能:

inline bool R3Point::
operator==(const R3Point& point) const
{
  // Return whether point is equal
  return ((v[0] == point.v[0]) && (v[1] == point.v[1]) && (v[2] == point.v[2]));
}
Run Code Online (Sandbox Code Playgroud)

我希望做的不是直接v[i] == point.v[i]比较,我希望只将数字与某个设定精度进行比较,这样如果v[i] = 0.33349999999999996和point.v[i] = 0.33350000000000002,我的相等比较将导致TRUE.

我知道有一个c ++ smanip setprecision ( int n );函数,我看到它在屏幕上显示输出时使用了很多cout.但是,我不确定这是否可以像我描述的那样在函数中使用.

谢谢.

Sou*_*sou 5

一般来说,==不应该用来比较双打,你应该做的事情如下:

if(v[0] - point.v[0] < 1e-9) { }
Run Code Online (Sandbox Code Playgroud)

您可以使用abs或fabs如果您不确定符号并相应地更改精度1e-9.