求根代码
此代码用来计算一元二次方程的根,如果满足b*b-4*a*c> =0,则输出根,否则什么都不输出.
#include "math.h "
#include "stdio.h "
void root2(float a,float b,float c,float root[2])
{
double d=sqrt(b*b-4*a*c);
root[0]=(-b+d)/(2*a);
root[1]=(-b-d)/(2*a);
}
main()
{
float a,b,c,root[2];
scanf( "%f%f%f ",&a,&b,&c);
if(b*b+4*a*c> =0)
{
root2(a,b,c,root);
printf( "%f,%f ",root[0],root[1]);
}
}
请看看代码有无问题.
[解决办法]
abc等这些变量声明为float是指它的存储类型,为了更精确的完成运算,在运算的时候都是使用双精度运算器在运算,赋值的时候再去考虑结果的存储类型
还有一种是关系转换,比如int a;a=5;当我进行a=a+1.0运算时,首先取出a的值5,然后将5转化为浮点数,在与1.0区进行运算,最后把运算结果存入a中,这时因为a为int类型,浮点数尾数部分舍去,结果就是6!