关于C语言中double型输出的问题

main(){doublea;scanf("%lf",&a);printf("%lf\n",a);getch();}为什么这个double型不是有16位有效数字吗??为什... main()
{
double a;
scanf("%lf",&a);
printf("%lf\n",a);
getch();
}

为什么这个double型不是有16位有效数字吗??为什么输入3.12121212 输出是3.121212???这跟float没区别啊???谢谢
展开
 我来答
钊冠bH
2010-05-25 · TA获得超过534个赞
知道答主
回答量:46
采纳率:0%
帮助的人:32.2万
展开全部
C语言默认是输出8位。
输出改成 printf("%.16lf\n",a);
这样就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iamXiaMi
2010-05-25 · TA获得超过1711个赞
知道大有可为答主
回答量:2734
采纳率:0%
帮助的人:2228万
展开全部
%f,全部输出,而且输出6位小数.

P.S. float的精度也远远超过6个小数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王蓉上那颗
2010-05-25 · TA获得超过219个赞
知道小有建树答主
回答量:493
采纳率:100%
帮助的人:264万
展开全部
int main()
{
double a;
scanf("%lf",&a);
printf("%-20.10lf\n",a);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
o剑客o
2010-05-25
知道答主
回答量:18
采纳率:0%
帮助的人:13.5万
展开全部
用printf("%.16lf\n",a);即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
开心地的春天
2018-06-26 · TA获得超过1.7万个赞
知道小有建树答主
回答量:115
采纳率:100%
帮助的人:4.4万
展开全部

你理解错咯

double的意思是可以有16位有效数字

而在固定格式输出的时候,都默认的是6位

用double的时候f前面加l是没有效果的

你要输出长度,可以写,%0.8f,这样就是输出8个有效数字了。

拓展资料:

double a;

scanf("%f",&a);   //应用scanf("%lf",&a);

执行上面语句时,发现double类型的输入不能使用%f进行输入,得用%lf才能正常得到a的值。

而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将float型的参数转换成double型。

故double型的输入输出形式如下:

double a;

scanf("%lf",&a);

printf("%f",a);

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式