如果声明 - 不正确的评估

时间:2012-10-29 19:01:36

标签: c++ if-statement evaluation

  

可能重复:
  How should I do floating point comparison?

这是一段代码,我无法弄清楚它有什么问题。

if语句错误地评估数字并转到“else”。

double m,k;

m = (y3-y1)/(x3-x1);
k = m*(-x1)+y1;

cout <<"\n\n"<< m <<"  "<< k << "\n";
cout <<"\n\n"<< ((-a)/b) <<"  "<< c/b << "\n";

if(m==((-a)/b) && k==c/b)
 {
  cout << "\nTaisne sakrīt ar kādu no trīsstūra malām!" << endl;
  goto beigas;
 }
  else
   cout << "\n\n WRONG \n\n";

用户输入值x1,y1,x3,y3,a,b,c - 都是 double

似乎只能用“m”工作。奇怪的是,当我尝试以下操作时,if语句的值为相同的值:

if(m==((-a)/b) && k<c/b)

以下是获取整个问题的屏幕截图:

http://i49.tinypic.com/307n88l.jpg

代码在用户输入所有值后开始。

谢谢,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

如果要比较两个浮点,请使用类似下限的阈值:

double m = a/b;

if (abs(m - (a/b)) < 0.0001)
{
    // execute code where m == a/b here
}

所以基本上比较float / double减去它们并确保结果小于某个阈值。