C语言--浮点数判断为0

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

fabs(x)<=1e-6 就是认为是0了//abs是int的绝对值;fabs是float的绝对值
float的精度误差在1e-6;double精度误差在1e-15 
所以要判断一个单精度浮点数:则是if( abs(f) <= 1e-6);
要判断一个双精度浮点数:则是if( abs(f) <= 1e-15 );

 出现-0.00的情况,需要+0.00

#include <stdio.h>
#include<math.h>

int main()
{

	float a, b, c;
	while (scanf("%f %f %f", &a, &b, &c) == 3)
	{
		float deta;
		deta = b * b - 4 * a * c;
		float count,count1;
		if (fabs(a)< 1e-6)
		{
			printf("Not quadratic equation\n");
		}
		else if (deta == 0)
		{
			count = (-b) / (2 * a);
			printf("x1=x2=%.2f\n", 0+count);//出现-0.00的情况,需要+0.00
		}
		else if (deta > 0)
		{
			count = ( - b + pow(deta, 0.5)) / (2 * a);
			count1 = (-b - pow(deta, 0.5)) / (2 * a);
			printf("x1=%.2f;x2=%.2f\n", count1,count);
		}
		else if (deta < 0)
		{
            float data;
			count = (-b )/ (2 * a);
			data = pow((-deta), 0.5)/(2*a);
			printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", count, data, count, data);
		}
	}
	return 0;
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值