猿问

c语言编程找错

#include<stdio.h>
int main()
{
    float r,h,l,s,sq,vq,vz;
    const float pi=3.1415;
    printf("r=?,h=?\n");
    scanf("%f %f",&r,&h);
    l=2*pi*r;
    s=pi*r*r;
    sq=4*pi*r*r;
    vq=3.0/4.0*pi*r*r*r;
    vz=pi*r*r*h;
    printf("圆周长l=%6.2f\n",l);
    printf("圆面积s=%6.2f\n",s);
    printf("球面积sq=%6.2f\n",sq);
    printf("球体积vq=%6.2f\n",vq);
    printf("圆柱体积vz=%6.2f\n",vz);
    return 0;
}

输出结果错误 为什么?

慕前端6184863
浏览 904回答 1
1回答

微光TY

精度问题,const float pi=3.1415,vq=3.0/4.0*pi*r*r*r;  发生强制转换,r原本为float型,因为表达式存在更高的精度double,因此提升为double型,但是输出的时候又转化为float输出
随时随地看视频慕课网APP
我要回答