求解一元二次方程、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;
}
/*输入一元二次方程的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;
}
相关文章推荐
- float 类型精度和两数比较大小
- 两个float 怎么比较大小
- iOS float类型比较大小
- Float和Float不能比较大小,因为不是同一对象
- C++ bool,char,short,int,long,float,double数据类型大小以及数据溢出值求解
- 关于为什么整型不能和float,double型直接比较大小的原因
- 计算机中基本类型float值表示和大小比较问题
- java中比较float和double的大小
- C语言 一元二次方程解的判定及浮点数大小的比较
- IOS float类型比较大小
- float 类型精度和两数比较大小
- float类型和0比较大小
- bash比较float类型大小
- 两个float数的比较大小以及浮点数是否和0相等
- float与double的范围和精度以及大小非零比较
- 两个float数的比较大小
- iOS float类型比较大小
- java中比较float和double的大小
- float类型比较大小
- float类型和0比较大小