浮点数判断是否为0

浮点数因为存储形式的原因不能直接和0值比较,当要判断一个浮点数是否等于0时:

fabs(x)<=1e-6 就是认为是0了

float,double分别遵循R32-24,R64-53的标准。
所以float的精度误差在1e-6;double精度误差在1e-15 
所以要判断一个单精度浮点数:则是if( abs(f) <= 1e-6);
要判断一个双精度浮点数:则是if( abs(f) <= 1e-15 );

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main()
{
	float a=0;
	double b=0;
	if(fabs(a)< 1e-6)
	{
		printf("%f\n",fabs(a));
		printf("float Equal 0!\n");
	}
	else
	{
		printf("%f\n",fabs(a));
		printf("float not Equal 0!\n");
	}

	if(fabs(b)<1e-15)
	{
		printf("%f\n",fabs(a));
		printf("double Equal 0!\n");
	}
	else
	{
		printf("%f\n",fabs(a));
		printf("double not Equal 0!\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Wchenchen0/article/details/81357007
今日推荐