我从其他地方得到了这段代码。根据网站管理员的说法,该代码摘自Knuth的计算机程序设计艺术。
由于我没有那本书,我想知道这两个函数之间有什么区别?
bool approximatelyEqual(float a, float b, float epsilon)
{
return fabs(a - b) <= ( (fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool essentiallyEqual(float a, float b, float epsilon)
{
return fabs(a - b) <= ( (fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
essentiallyEqual
方法始终需要比approximatelyEqual
方法更加精细的“间隔”值吗? - Cheok Yan ChengessentiallyEqual
的值总是比approximatelyEqual
的值“更接近”。 - palswim