![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言如何输入双精度数据?
main(){doublea,b;scanf("%f,%f",&a,&b);a+=b;printf("a+b=%f",a);}程序本身很简单,请问在上面的程序运行时输入两...
main()
{
double a,b;
scanf("%f,%f",&a,&b);
a+=b;
printf("a+b=%f",a);
}
程序本身很简单,请问在上面的程序运行时输入两个数据:10,10,为什么得不到20.000000?
在输入时,将格式修改为%lf即可,为什么%f不可以呢?
大家没有理解问题的实质。结果是20.000000,其中的小数位数是由%f决定的,本人没有异议,在输出时无需改成%lf,更无需 用格式控制其输出的小数位数。
关键问题是,scanf("%f,%f",&a,&b);不能输入双精度数据吗?如果超过范围发生溢出正常,但输入10,10为什么就得不到20这个结果呢?
大家可以把上述程序运行下,看得到的结果是怎么算出来的? 展开
{
double a,b;
scanf("%f,%f",&a,&b);
a+=b;
printf("a+b=%f",a);
}
程序本身很简单,请问在上面的程序运行时输入两个数据:10,10,为什么得不到20.000000?
在输入时,将格式修改为%lf即可,为什么%f不可以呢?
大家没有理解问题的实质。结果是20.000000,其中的小数位数是由%f决定的,本人没有异议,在输出时无需改成%lf,更无需 用格式控制其输出的小数位数。
关键问题是,scanf("%f,%f",&a,&b);不能输入双精度数据吗?如果超过范围发生溢出正常,但输入10,10为什么就得不到20这个结果呢?
大家可以把上述程序运行下,看得到的结果是怎么算出来的? 展开
6个回答
展开全部
C语言用scanf()函数输入双精度数据时,采用的数据格式参数必须是%lf,如:
double d;
scanf("%lf", &d );
scanf("%f,%f",&a,&b);不能输入双精度数据吗?
当然不能。主要原因在于double和float类型的大小不同:
double类型数据在内存中存储占8字节(64位),按IEEE754标准存储,格式为:1位符号位+11位指数位+52位小数位
float类型数据在内存中存储占4字节(32位),按IEEE754标准存储,格式为:1位符号位+8位指数位+23位小数位
当输入数据格式串为%f时,scanf()按float类型将输入的数据存储到内存地址中,这时,若再按double类型解释输出数据时,数据当然不是用户输入的内容了。
展开全部
首先 读入double要%lf
然后输出的时候需要设置保留位数 否则如果没有小数的话就是输出整数
printf("a+b=%.6lf",a);
就是保留6位
%f对应的是单精度的float
double必须用%lf 输出的时候是会把double转换成float输出的 但是输入不能
然后输出的时候需要设置保留位数 否则如果没有小数的话就是输出整数
printf("a+b=%.6lf",a);
就是保留6位
%f对应的是单精度的float
double必须用%lf 输出的时候是会把double转换成float输出的 但是输入不能
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为%f是float的占位符,double的占位符是%lf,所以程序要改成一下的形式就可以了
main()
{
double a,b;
scanf("%lf,%lf",&a,&b);
a+=b;
printf("a+b=%lf",a);
}
这段程序我已经通过调试了
main()
{
double a,b;
scanf("%lf,%lf",&a,&b);
a+=b;
printf("a+b=%lf",a);
}
这段程序我已经通过调试了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出可以使用%f,但是输入一定要用%lf。
%lf%lf,有的编译器中间不用逗号。
楼主没必要去钻牛角尖,知道什么用就行了,为什么还一定要知道它的工作原理呢?
%lf%lf,有的编译器中间不用逗号。
楼主没必要去钻牛角尖,知道什么用就行了,为什么还一定要知道它的工作原理呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样也可以输出20
main()
{
float a,b;
scanf("%f,%f",&a,&b);
a+=b;
printf("a+b=%f",a);
}
float和double的存储格式差的太远
main()
{
float a,b;
scanf("%f,%f",&a,&b);
a+=b;
printf("a+b=%f",a);
}
float和double的存储格式差的太远
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询