%f与%lf的区别和用法

时间:2022-10-26 20:55:16

​代码如下:

#include<stdio.h>
int main(void)
{
double x;float y;
scanf("%lf%f",&x,&y);
printf("%f %f",x,y);
return 0;
}

%f和%lf是格式字符串,作用是在数据输入或输出时,把数据按照指定的格式(例如%d就代表十进制形式)输入或输出。

%f代表单精度浮点型数据,也就是float数据类型;%lf代表双精度浮点型数据,也就是double数据类型。

一个float类型的数据的有效数字一般是6位,分配4个字节,数值范围(绝对值)是0以及1.2×10-38~3.4×1038

一个double类型的数据的有效数字一般是15位,分配8个字节,数值范围(绝对值)是0以及2.3×10-308~1.7×10308

需要注意的是

在C语言中,在使用scanf输入函数和printf输出函数时,只有scanf函数需要区分%f和%lf,也就是说当输入数据是float类型时只能用%f,当输入数据是double类型时只能用%lf。

而printf输出函数则没有那么严格,因为%f既可以用来输出float类型的数据,也可以用来输出double类型的数据。

但是严格来说,%lf在printf下是未定义的,也就是说是不能用的,但是很多编译器可能会支持它,所以我们会看到printf也可以用%lf来输出float类型或double类型的数据的现象,但我们还是尽量用%f,毕竟printf用%f输出float和double类型的数据才是“正统”。