为什么只能用double,float不可以?

为什么float就不可以?


#include<stdio.h>
int main()
{
    const double PI = 3.14;
    double r, h, C1, Sa, Sb, Va, Vb;
    scanf("%lf %lf", &r,&h);
    C1 = 2 * PI * r;
    Sa = PI * r * r;
    Sb = 4 * PI * r * r;
    Va = (4 * PI * r * r * r) / 3;
    Vb = Sa * h;
    printf("C1=%.2f\nSa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f", C1, Sa, Sb, Va, Vb);
    return 0;

}



#include<stdio.h>
int main()
{
    const float PI = 3.14;
    float r, h, C1, Sa, Sb, Va, Vb;
    scanf("%f %f", &r,&h);
    C1 = 2 * PI * r;
    Sa = PI * r * r;
    Sb = 4 * PI * r * r;
    Va = (4 * PI * r * r * r) / 3;
    Vb = Sa * h;
    printf("C1=%.2f\nSa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f", C1, Sa, Sb, Va, Vb);
    return 0;

}

![img](

"=600 #left"

img

你说的float不行是什么意思,是提交答案不对还是啥?
他们的区别是:数据范围和数据精度的差别

精度不一样

float %f 1.234f
double %lf 1.234