我用的是VS2010 编写的是圆周长和 圆的面积而已,但是输入数字大于3时,输出结果的百万分位会出数字WHY?
#include<stdio.h>voidmain(){floatp=3.14,r,z,s;for(;;){printf("请输入一个数\n");scanf("%f",&...
#include<stdio.h>
void main()
{
float p=3.14,r,z,s;
for(;;)
{
printf("请输入一个数\n");
scanf("%f",&r);
z=2*r*p;
s=p*r*r;
printf("周长为:%f\n面积为:%f\n",z,s);
}
} 展开
void main()
{
float p=3.14,r,z,s;
for(;;)
{
printf("请输入一个数\n");
scanf("%f",&r);
z=2*r*p;
s=p*r*r;
printf("周长为:%f\n面积为:%f\n",z,s);
}
} 展开
3个回答
2011-05-19
展开全部
float为7位有效数字,scanf和printf保留小数点后6位数字,当数据长度超过7位时,可能存在计算误差。显示精度应该与程序需要一致。这里p=3.14为小数点后2位数字,如果输入r精度为小数点后2位数字,则输出精度不大于小数点后3位数字,即输出可改为
printf("周长为:%.3f\n面积为:%.3f\n",z,s);
printf("周长为:%.3f\n面积为:%.3f\n",z,s);
展开全部
这大概是十进制和二进制之间转换的误差
而且printf输出float会保留6位有效数字,
float的精度估计也不够,你可以用double和%lf试试
而且printf输出float会保留6位有效数字,
float的精度估计也不够,你可以用double和%lf试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
double p=3.1415926,r,z,s;
for(;;)
{
printf("请输入一个数\n");
scanf("%f",&r);
z=2.0*r*p;
s=p*r*r;
printf("周长为:%f\n面积为:%f\n",z,s);
}
}
我试过了,能交了,你试一下
void main()
{
double p=3.1415926,r,z,s;
for(;;)
{
printf("请输入一个数\n");
scanf("%f",&r);
z=2.0*r*p;
s=p*r*r;
printf("周长为:%f\n面积为:%f\n",z,s);
}
}
我试过了,能交了,你试一下
追问
也许程序不同 您编写的在VS2010上 是出现其他数据的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询