对于C语言来说,浮点数类型有两种,double
和float
,而double类型比float类型的精度要高,换句话说就是前者位数多。
C语言中编译器会遵从C语言标准规范的设计,而编译器内部会有整形提升
和隐式类型转换
,至于细节请查看编译器相关的设计。
对于printf函数来说,输出一个double类型的参数,只需要%f
即可,并不需要%lf
,输出精度会在函数内处理,并不会丢失。
而对于scanf函数来说,读取一个double类型的参数,是需要%lf
的修饰,如果使用%f
读取,则它的精度会丢失
。
综上:printf
输出double
类型,使用%f
即可;而scanf
读取double
类型,必须使用%lf
防止精度丢失。