求解一元二次方程、float与0比较大小

来源:互联网 发布:数据字典模板 编辑:程序博客网 时间:2024/05/21 21:42

昨天帮同学看题,发现了知识上的一个重大缺漏,原来float和double是不能和0直接比较大小的,长知识了。

/*输入一元二次方程的a,b,c求根*/#include<iostream>#include<cmath>using namespace std;const float EPSION=0.000001; //定义最小的floatint main(){float a,b,c;float delta,shi,xu;while(cin>>a>>b>>c){delta=b*b-4*a*c;if(fabs(delta)<EPSION){shi=-1*b/(2*a);cout<<"该方程有两个相同的根:"<<shi<<endl;}else if(delta>=EPSION){shi=(-1*b+sqrt(delta))/(2*a); xu=(-1*b-sqrt(delta))/(2*a);cout<<"该方程有两个不同的实根:"<<shi<<" , "<<xu<<endl;}else if(delta<=-EPSION){shi=-1*b/(2*a);xu=sqrt(abs(delta))/(2*a);cout<<"该方程有两个复根:"<<shi<<"+ "<<xu<<"i , "<<shi<<"+,"<<xu<<endl;}}return 0;}