

下面的是题目,请问我的程序哪里出问题了,没有办法算出来正确的数值。
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main(){
double a,b,c,delta;
const double precision=1e-6;//小数精度。
double x1,x2;
cin>>a>>b>>c;
delta=b*b-4*a*c;
if(delta<-precision)
cout<<"No answer!\n";
else if(fabs(delta)<precision){
//认为等于0,浮点数,无法做相等比较。
x1=x2=-b/(2*a);
printf("x1=x2=%.5lf",x1);
}else{
//delta>0
delta=sqrt(delta);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
if(x1>x2){
a=x1;
x1=x2;
x2=a;
}
printf("x1=%.5lf;x2=%.5lf",x1,x2);
}
return 0;
}