|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
float r,s,c;
/*********begin*********/
float PI = 3.14;
printf("请输入圆半径r:");
scanf("%f",&r);
c = 2*PI*r;
s = PI*r*r;
printf("圆面积S=%f,圆周长C=%f",s, c);
/*********end*********/
return 0;
}
这个问题的原因是浮点数的精度问题。在计算机中,浮点数是以二进制形式存储的,而不是十进制。由于浮点数的二进制表示是有限的,某些十进制数可能无法精确表示为浮点数。
在这个代码中,使用了一个近似值 PI = 3.14 来代表圆周率。然而,这个近似值并不是精确的,它只是一个有限的小数。当使用这个近似值进行计算时,可能会出现一些舍入误差。
另外,printf函数默认情况下会对浮点数进行四舍五入并输出6位小数。所以当输出圆面积和圆周长时,可能会出现小数点后的1位数。
要解决这个问题,可以使用更精确的圆周率值,如使用宏定义或者使用更多位数的近似值。另外,可以使用%.2f格式化输出来限制输出的小数位数为2位,以避免显示多余的小数位数。
修改后的代码如下:
#include <stdio.h>
#define PI 3.14159265358979323846
int main()
{
float r, s, c;
printf("请输入圆半径r:");
scanf("%f", &r);
c = 2 * PI * r;
s = PI * r * r;
printf("圆面积S=%.2f, 圆周长C=%.2f", s, c);
return 0;
}
这样修改后,输出的圆面积和圆周长将只保留两位小数。
|
|