2

可能重复:
我应该如何进行浮点比较?

这是一段代码,我不知道它有什么问题。

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

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

谢谢,任何帮助将不胜感激!

4

1 回答 1

0

当您想比较两个浮点时,请使用类似的阈值:

double m = a/b;

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

所以基本上比较浮点/双减它们并确保结果小于某个阈值。

于 2012-10-29T19:07:42.033 回答