如何计算双精度数组中特定范围内的值的数量

时间:2017-03-02 15:09:58

标签: c++

例如,我有一个双打数组,我想搜索等于2.0的值,但因为它是一个双精度数组,所以很难找到确切的值,所以我想找到2-范围内的值1E-10,2 + 1E-10。我见过有些人使用upper_bound和lower_bound来做。 我该怎么做?

2 个答案:

答案 0 :(得分:1)

只需使用谓词:

std::count_if(
    begin(array),
    end(array),
    [](double v) { return std::abs(v - 2.0) <= 1e-10; }
);

答案 1 :(得分:0)

由于您已经定义了接受值的界限或阈值,为什么不写

if ( val > 2-1e-10 && val < 2+1e-10 ) {}