Возможно ли прямое сравнение между int и float в C? - PullRequest
8 голосов
/ 21 июля 2009

Я использую Visual Studio 6 со старым временным кодом, написанным на c. Я обнаружил проблему, когда код выглядит следующим образом ..

int x = 3;
float y = 3.0;

if(x == y){
   do some crazy stuff
}

это правильное сравнение? возможно ли во время выполнения выделение для числа с плавающей запятой 3.0000001 и это не получится?

Ответы [ 11 ]

0 голосов
/ 21 июля 2009

Редактировать

Правильный способ - использовать метод epsilon:

#include <math.h>
int x = 3;
int y = 3.0;
if (fabs((float) x - y) < 0.0001) { // Adjust the epsilon
  // Do stuff
}
...