在一个更接近零的有限大小的数组中选择float的有效方法是什么?

jbc*_*oko 4 c++ math floating-point

对于每个函数,我得到一个有限大小的浮点数,我需要选择它.

所以,如果我有类似的东西

1)

 {-0.02, 0.5, 0.98, -0.15, etc... }
Run Code Online (Sandbox Code Playgroud)

我会从这个列表中选择"-0.02".

2)

 {-0.78, 0.003, 0.1, -1.8, etc... }
Run Code Online (Sandbox Code Playgroud)

现在,我会从这个列表中选择"0.003".

这只是一个例子.在我的真实程序中,我有5-6个小数点浮点数.

Jer*_*fin 6

std::min_element有一个带有比较函数对象的重载; 这就是我在这里使用的:

float val = *std::min_element(std::begin(v), std::end(v),
    [](float a, float b) { return fabs(a) < fabs(b); } );
Run Code Online (Sandbox Code Playgroud)

  • @jbchichoko Jerry Coffin的算法也许是最好的解决方案,我赞成它.但是,**如果在空数组上运行它,程序将崩溃**.确保它在您的代码中永远不会发生. (2认同)