我想比较2 双打落在[0.0,1.0]。如何比较双精度5位数?
我的功能(从https://stackoverflow.com/a/17341拍摄) -
inline bool isEqual(double x, double y)
{
const double epsilon = 0.000001;
return fabs(x - y) < epsilon;
}
用途区内─
cerr << isEqual(1.000001, 1.000002) << endl;
cerr << isEqual(1.000010, 1.000020) << endl;
是 -
0
0
输出而我第一次希望是true
,第二次是false
。请告诉我我要去哪里以及如何解决问题?
你总是会得到浮点错误。即使精确度很高,“晶圆厂(1.000001 - 1.000002)”将等于“0.000001”,并非严格低于此值。 –
该函数名称错误。它不**测试平等,应该被称为'almost_equals'或沿着这条线。 –