您需要知道一个特殊的常量,称为DBL_EPSILON(或FLT_EPSILON).这是可以添加到1.0并更改其值的最小值.值1.0非常重要 - 添加到DBL_EPSILON时,更大的数字不会更改.现在,您可以将此值缩放为您要比较的数字,以判断它们是否不同.比较两个双打的正确表达式是:
if (fabs(a-b) <= DBL_EPSILON * fmax(fabs(a), fabs(b)))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)