C++ 当条件为true时返回false的if语句

C++ 当条件为true时返回false的if语句,c++,C++,如果if语句在满足条件时不总是返回true,我会遇到问题(请参阅下面的代码) 这个if语句位于另一个循环中的一个循环中,该循环运行7次(实际上是6次,因为最后一次是空的),我注意到它在前3次迭代中工作正常。引起我注意的是 在循环1的第一次迭代中,条件在循环2的第三次迭代中得到满足,并返回true 在循环1的第二次迭代中,条件在循环2的第二次迭代中满足,并返回true 在循环2的第三次迭代中,该条件在循环2的第一次迭代中得到满足,并返回true 在第四次迭代中,条件在所有情况下都为true,但它

如果if语句在满足条件时不总是返回true,我会遇到问题(请参阅下面的代码)

这个if语句位于另一个循环中的一个循环中,该循环运行7次(实际上是6次,因为最后一次是空的),我注意到它在前3次迭代中工作正常。引起我注意的是

  • 在循环1的第一次迭代中,条件在循环2的第三次迭代中得到满足,并返回true
  • 在循环1的第二次迭代中,条件在循环2的第二次迭代中满足,并返回true
  • 在循环2的第三次迭代中,该条件在循环2的第一次迭代中得到满足,并返回true
  • 在第四次迭代中,条件在所有情况下都为true,但它总是返回false
  • 在第5次迭代中,条件在所有情况下都为false,并且返回false
  • 在第6次迭代中相同
  • 循环的第7次迭代为空

void compute_邻居(向量和位置、double和GPmin、double和GPmax)
{
向量i;
分配(positions.size(),neights_i);

对于(无符号i=0;i您将遇到舍入错误。 它打印0.15,但实际上是稍小或稍大的值,因此比较失败

比如说,

#include <iostream>

int main() {
  double x = 0.15, y = 0.14999999999;
  if (x <= y)
    std::cout << "Equation returns true." << std::endl;
  else
    std::cout << "x = " << x << "; y = " << y << "; but x <= y is false." << std::endl;
}
#包括
int main(){
双x=0.15,y=0.149999999;

if(x)可能稍微超出范围?请尝试以更高的精度打印它:
std::setprecision(1000)if语句在条件为true时不返回false。条件为false。这是您的证据。因此,您犯了一个错误。将其缩小到a,您将发现错误。@KorelK,因此不相关。请参阅