Проблема с BOOST_CHECK_CLOSE_FRACTION

Я использую Повышение:: Тестовая библиотека, и я пытаюсь проверить, ли фактическое процентное значение близко к математическому ожиданию:

BOOST_CHECK_CLOSE_FRACTION(
    items[i].ExpectedPercent,
    items[i].ActualCount / totalCount,
    0.05);

По некоторым причинам эта проверка перестала работать, даже когда значения достаточно близки:

difference between items[i].ExpectedPercent{0.40000000000000002}
   and items[i].ActualCount / totalReturned{0.42999999999999999}
                                    exceeds 0.050000000000000003

Действительно ли это - проблема с Повышением или проблема с тем, как я использую Повышение?

5
задан iano 21 January 2010 в 23:19
поделиться

2 ответа

После некоторого тестирования оказывается, что документация для Boost_Check_Close_Fraction неверна. Толерантность должна быть указана как доля ожидаемого значения.

Так, TFAE:

BOOST_CHECK(abs(x - y) < (min(x, y) * 0.1));
BOOST_CHECK_CLOSE(x, y, 10);
BOOST_CHECK_CLOSE_FRACTION(x, y, 0.1);
3
ответ дан 14 December 2019 в 13:36
поделиться

Это проблема с тем, как вы используете повышение.

Последний аргумент - это процентное толерантность, а не абсолютное значение отклонения. 5% от 0,4 составляет 0,02.

2
ответ дан 14 December 2019 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: