浮点型判断是否0值,只能判断其绝对值在某个精度范围内进行判断,不能直接 == 0.0来进行。
正确做法:
先定义一个精度范围,当double小于该精度范围时判定double变量是否为0。可以使用fabs()求绝对值和float.h头文件中的DBL_EPSILON进行判断:
DBL_EPSILON是最小误差。 是DBL_EPSILON+X不等于X的最小的正数
点击查看代码
double b = sin(M_PI / 6.0);
if (fabs(b - 0.5) < DBL_EPSILON) //可能正确也可能错误,和编译器有关
{
cout << "This is correct method";
}
if ((b - 0.5) == 0.0)
{
cout << "This is wrong method";
}
原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/277048.html