c++ - If 语句 - 不正确的评估

标签 c++ if-statement evaluation

<分区>

Possible Duplicate:
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

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

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

最佳答案

当你想比较两个 float 时,使用像这样的阈值:

double m = a/b;

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

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

关于c++ - If 语句 - 不正确的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127979/

相关文章:

bash - xargs - 如果条件和回显 {}

Java if 或语句未按预期工作

r - R中具有mapply的子集参数的非标准评估

c++ - c2676 - 二进制 '++' 未定义此运算符

c++ - g++ 创建进程 : no such file or directory

c++ - 到达定界符时跳到文本文件的下一行

function - Haskell 多个条件组合

python - Python 逻辑表达式中的奇怪转换

php - 如何将字符串转换为包含数学运算的数字?

c++全局运算符不能很好地与模板类一起使用