int 是整型变量,double是双精度浮点型;
你这个计算,最好定义r,s,l用float或者double;否则,计算表达式3.14*r*r相当于3*(int)r*(int)*r,变量会被舍弃小数取整再计算(不是四舍五入)
#include
#include
int main()
{
double r,s,l;
printf("input r:\n");
scanf("%f",&r);
s=3.14*r*r;
printf("3.14*r*r=%lf\n", s);
l=6.28*r;
printf("6.28*r=%lf\n",l);
system("pause");
}
int是整型,double是双精度浮点型,比int型精度要高
你给s,l定义的都是int型,但是s,l和3.14,6.28分别运算后就自动变成了double型了
C语言规定,精度低的可以转换为精度高的,精度高的不能转换为精度低的,所以double型是不能够转换为int型的
你可以把r,s,l都定义为double型就OK了
s是int 但是你3.14是double 乘以int结果也是double,相当于把double隐形的转为int了你应该定义为double