浮点数不能直接用==来判断是否相等,但可以用< 或 >来确定大小。确定两个浮点数相等和精确度有关。可以用标准C99提供的几个精度常量来判断是否相等。
float.h
FLT_EPSILON float精度
DBL_EPSILON double精度
LDBL_EPSILON long double精度
如:
bool DoubleEquel(double a, double b)
{
return abs(a - b) < DBL_EPSILON;
}
a和b的绝对值小于DBL_EPSILON就认为是相等的。
本文介绍了为什么不能直接使用==操作符来比较浮点数,并提供了一种基于精度常量的方法来判断两个浮点数是否相等。通过使用C99标准中定义的DBL_EPSILON来比较双精度浮点数的差异,可以有效解决浮点运算误差带来的问题。
9万+





