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

How to calculate number of values in a particular range in an array of doubles

本文关键字:范围内 数组 何计算 计算      更新时间:2023-10-16

例如,我有一系列双打,我想搜索等于2.0的值,但是由于它是双倍的数组,因此很难找到精确的值在2-1e-10,2 1e-10范围内找到值。我已经看到有些人使用upper_bound和lower_bound这样做。我该怎么做?

只需使用谓词:

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

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

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