c语言中%f与%lf有什么区别?

如题所述

%lf\n和%f\n的区别为:输入不同、输出不同、精度损失不同。

一、输入不同

1、%lf\n:%lf\n输入数据时要求是float类型。

2、%f\n:%f\n输入数据时要求是double类型。

二、输出不同

1、%lf\n:double类型以%lf\n格式输出数据时不会自动转成%lf\n格式,会导致输入值错误。

2、%f\n:float类型以%f\n格式输出数据时会自动转成%f\n格式,不会导致输入值错误。

三、精度损失不同

1、%lf\n:单精度数据使用%lf\n格式会造成精度损失。

2、%f\n:双精度数据使用%f\n不会造成精度损失。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-19
%f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。
其中:
float,单精度浮点型,对应%f.
double,双精度浮点型,对应%lf.

在用于输出时:
float类型可以使用%lf格式,但不会有任何好处。
double类型如果使用了%f格式可能会导致输出错误。

在用于输入时:
double 类型使用了%f格式,会导致输入值错误。
float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。

所以在输入输出时,一定要区分好double和float,而使用对应的格式符号。
第2个回答  2013-11-13
当然有区别%lf匹配 double%f匹配 float你这样使用当然相同,一般输出时不会有什么区别,因为float的精度已经很高了,实际中很难用到float无法表示的数,但是一般从命令窗口或者从文件中读取数据时就会有问题!如果数据是double型的,那么你scanf函数中必须用%lf给你举个例子吧:#include "stdio.h"
void main()
{
double d;
scanf("%f",&d);//运行后你再换成scanf("%lf",&d)试试,你就知道区别了
printf("%f",d);
}
第3个回答  2013-11-13
%f是单精度浮点型,输出的时候要满足6位小数。 %lf就是输出数值总长度为L,整数个数加小数个数,不足补空,右顶格起 %f和%lf对scanf来说有差别,%f用于float,%lf用于double 在printf中,%f用于float和double,因为float会自动转为double,另外,%lf对于printf在C89标准中无定义
第4个回答  2006-12-07
没有什么太大区别,就是在输入数据的时候 ,如果是%f%f,那么输入的两个数据之间可以是空格、Tab键和回车;
如果是%f,%f,那么输入的两个数据之间必须用逗号隔开,这是因为在前面的%f,%f里规定了它的输入格式是逗号分隔。
相似回答