C++浮点数问题

0 c++ floating-point

可能重复:
浮动和双重比较的最有效方法

我是C++的新手.我在阅读C++时遇到了疑问.如何判断两个浮点数是否相等?

提前致谢

Don*_*eba 5

您需要知道一个特殊的常量,称为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)