Как проверить зависимости чисел с плавающей запятой

Я хочу определить (в C ++), является ли одно число с плавающей запятой мультипликативно обратным другому числу с плавающей запятой. Проблема в том, что для этого мне нужно использовать третью переменную. Например, этот код:

float x=5,y=0.2;
if(x==(1/y)) cout<<"They are the multiplicative inverse of eachother"<<endl;
else cout<<"They are NOT the multiplicative inverse of eachother"<<endl;

выведет: «они не ...», что неверно, а следующий код:

float x=5,y=0.2,z;
z=1/y;
if(x==z) cout<<"They are the multiplicative inverse of eachother"<<endl;
else cout<<"They are NOT the multiplicative inverse of eachother"<<endl;

выведет: «они ...», что верно.
почему это происходит?

12
задан mskfisher 9 May 2012 в 19:05
поделиться