Я пишу эту функцию, которая принимает 2 цифры ref и данные и проверяет, находится ли данные в пределах 5% от ref.Как проверить, находится ли int в пределах +/- некоторый процент
Примера: если порядковый 100 и данные 102, он возвращает 1.
int within_5_percent(int ref, int data)
{
int result = 0;
int lower_bound = (ref - 0.05 * ref);
int upper_bound = (ref + 0.05 * ref);
// printf("Upper: %d\n",upper_bound);
// printf("Lower: %d\n", lower_bound);
if(data >= lower_bound && data <= upper_bound)
{
result = 1;
}
else
{
result = 0;
}
return result;
}
Проблемы я имею в lower_bound. Когда я передаю 100 как ref, верхний_отчет равен 105, но по какой-то причине lower_bound равен 94, когда он действительно должен быть 95.
«двойной» округляется как «int». –
Возможный дубликат [Почему десятичные числа не могут быть представлены точно в двоичном?] (Http://stackoverflow.com/questions/1089018/why-cant-decimal-numbers-be-represented-exactly-in-binary) –
Возможно, я ошибался в отношении округления: http://ideone.com/vPmQDQ –