您的位置:首页 > 其它

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

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

/*输入一元二次方程的a,b,c求根*/
#include<iostream>
#include<cmath>
using namespace std;
const float EPSION=0.000001; //定义最小的float
int 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: