#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为什么输出是200.96(信息学奥赛一本通1030:计算球的体积)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
a5156520 2023-07-08 17:22关注因为前面4/3是整数运算,结果1,然后再乘以后面的表达式,所以结果就是200.96了;
把4或3一个改为带个小数点即可让整数运算变为double类型计算, 让除法运算保留小数结果,最后计算出结果的精度会更高。
修改如下:
参考链接:让你彻底明白c语言的浮点型及整型除法问题_c语言float除法_blast_dragon的博客-CSDN博客 C初学者在学到浮点型的时候,经常会有很多疑惑,下面是一些疑惑的解答:首先,看下面的一个简单的程序printf("%d",(3+3/4)*100);很多初学者会认为结果是(3+0.75)*100=375其实不然,结果应为300。在C中,如果两个整型(int)变量做除法,如果出现了小数,那么,C只会取整数部分。比如0.75,整数部分为0,小数部分为75,那么最终的结果应为0;再比如1.25,最终结果应为1。那么该如何解决这个问题?第一种方法如下:printf("%f",(3+3.0/4.0_c语言float除法https://blog.csdn.net/weixin_49635198/article/details/116708682
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录