求解,有个小问题解决不了,心不安
#include <stdio.h>#include <math.h>
int main (void)
{
float a=1,b=-(1+1.0e12),c=1.0e12,x1,x2,q;
q=sqrt(b*b-4*a*c);
x1=(-b+q)/(2*a);
x2=c/(a*x1);
printf("x1=%f\nx2=%f\n",x1,x2);
return 0;
}
大家看下这个程序,是方程求根问题,我用float和double求出的结果是不一样的,有4000多的误差,是怎么回事呢,是因为float数值范围太小导致的吗,我觉得应该不是,float范围应该够用。