我有两个双打,a和b,在C ++中应该是相同的但是由于某种原因没有被这样对待。以下代码:
cout << a << "==" << b << ": " << (a == b) << endl;
正在输出
0.5 == 0.5: 0
为什么这会解决为假的任何想法?
答案 0 :(得分:2)
为了避免在比较小数时出错,使用函数可能很有用:
bool AreSame(double a, double b)
{
return fabs(a - b) < EPSILON;
}
其中EPSILON可由少数代表,例如.001
抓住this问题。
编辑:通过加入<limits>
可以使用std::numeric_limits<double>::epsilon()