请问一下这段代码输入是4为什么输出是200.96(信息学奥赛一本通1030:计算球的体积)

#include<iostream>
#include<cstdio>
using namespace std;
double r;
int main(){
    scanf("%lf",&r);
    printf("%.2lf",4/3*3.14*r*r*r);
    return 0;
}

因为前面4/3是整数运算,结果1,然后再乘以后面的表达式,所以结果就是200.96了;

把4或3一个改为带个小数点即可让整数运算变为double类型计算, 让除法运算保留小数结果,最后计算出结果的精度会更高。

修改如下:

参考链接:


#include<iostream>
#include<cstdio>
using namespace std;
double r;
int main(){
    scanf("%lf",&r);
    // https://blog.csdn.net/weixin_49635198/article/details/116708682
    printf("%.2f",4.0/3*3.14*r*r*r);
    return 0;
}

img