c语言里%f跟%lf有什么区别?

Python015

c语言里%f跟%lf有什么区别?,第1张

由于精度的原因,输出%lf和%f的数据不同,可能会造成错误。

主要有一下四点区别:

1、代表的数据类型不同

%f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。

2、有效数字位数不同

单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。

3、所能表示数的范围不同

单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38,双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308

4、在程序中处理速度不同

一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。

%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不会造成精度损失。