int main(void)
{
double a,b,c,d,e
double x1,x2
printf("请输入ax^2+bx +c = 0中a,b,c的值")
scanf("%lf,%lf,%lf",&a,&b,&c)
e = b * b - 4 * a * c
if (e<0) {
printf("无解,请重新输入\n")
scanf("%lf,%lf,%lf",&a,&b,&c)
}
printf("输入正确,正在计算....\n")
d = sqrt(e)
x1 = (-b + d)/(2 * a)
x2 = (-b - d)/(2 * a)
printf("x1=%f\n",x1)
printf("x2=%f\n",x2)
return 0
}
算法没有问题问题出在精度上
float精度不足 导致计算到一定精度时进入浮点陷阱
把所有的float定义改为double 输入输出对应用%lf 就可以得到正确结果了