在printf函数中%f和%lf有区别么,为何答案是一样的?

#include<stdio.h>main(){floata=9.1234567890;doubleb=9.1234567890;//printf("inputanumb... #include<stdio.h>
main()
{
float a = 9.1234567890;
double b = 9.1234567890;
//printf("input a number:");
//scanf("%lf",&a);
printf("%lf %f\n",a,a);
printf("%lf %f\n",b,b);
return 0;
}
我知道在scanf函数中,%f和%lf要对应float和double,那在printf函数中呢,二者输出结果一样,可以理解为在printf函数中,二者无区别么?
float和double都可以用%f和%lf输出么?
%d和%ld之间也有类似的关系么?
展开
 我来答
code2
推荐于2017-09-03 · TA获得超过1268个赞
知道小有建树答主
回答量:1316
采纳率:79%
帮助的人:384万
展开全部

float和double都可以用%f和%lf输出,一般没有差别,但是如下例子中就有了差别:

float a = 9.1234567891234567890e+30;
double b = 9.1234567891234567890e+30;
//printf("input a number:");
//scanf("%lf",&a);
printf("%f\n",a);
printf("%lf\n",b);
getch();
return 0;

输出为:

%d和%ld的差别和这个类似。

慕容冰绡
2013-11-14 · TA获得超过1952个赞
知道小有建树答主
回答量:682
采纳率:50%
帮助的人:525万
展开全部
不一样,如果b是double型的,其值如果大于float能表示的最大值,那么用%f输出b的时候就输出不正常,因为double型比float所占字节要多,其实就和把double强制转化为float可能丢失的道理一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真王邪眼3
2018-12-18
知道答主
回答量:1
采纳率:0%
帮助的人:804
展开全部
其实用printf输出无论用%f还是%lf都一样,输出精度的差别是由于数据本身类型造成的,例如用float定义了一个7位以上的数,无论是用%f还是%lf输出的有效位都是7位。而定义的double类型用%f和%lf输出有效位数都是16位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
只因醉难忘4
2013-11-14
知道答主
回答量:16
采纳率:0%
帮助的人:13.4万
展开全部
%lf和%f在小数点多的时候就有区别,l表示long,可以表示更多的位数,%d和%ld也是这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式