float比较(operator!=)返回false,但数字相等,尽管数字看起来相同

时间:2014-12-08 14:00:47

标签: c++ vector floating-point equality

我写了一个小测试来评估我的程序,但不知何故发生了一件令人讨厌的事情:

  

向量的值(使用' 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());
    }

}

0 个答案:

没有答案