我写了一个小测试来评估我的程序,但不知何故发生了一件令人讨厌的事情:
向量的值(使用' cout'在第一个循环中打印): 0.06 0.06 0.06 0.06 0.06 0.6
由函数调用触发的消息失败
i = 4时的调整为0.06,但应该为0.06
不知何故,这两个浮点数的相当简单的比较在这个循环中返回false,但数字是相等的打印并且应该相等。此外,从i = 0到i = 3,值的比较评估应该(返回相等)
有人知道问题是什么吗?
vector<float> adjustment = *adj.getCalculatedAdjustment();
for (vector<float>::iterator it = adjustment.begin();it!=adjustment.end();it++){
cout << *it << "\n";
}
for (unsigned int i=0;i<adjustment.size()-1;i++){
if (adjustment[i]!=(float)0.06){
stringstream ss;
ss << "Adjustment at i=" << i << " was " << adjustment[i] << ", but should have been 0.06";
fail(ss.str());
}
}