c语言单精度浮点型为什么可以输出16位,%f可以代替%lf

如题所述

%f 是默认输出格式,默认输出格式显示到小数点下6位,前方有多少显示多少。
float 型,精度是 有效数字 6-7 位。多出的位的精度不保证。

scanf() 输入格式 double 必须用 %lf 不允许用 %f
printf() 输入格式 double 可以 用 %lf 也 允许 用 %f
这是编译器 这么定 的 游戏规则,没太多 道理。
不是说 "%f 可以代替 %lf."
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-20

输出的数值,只有前7位与输入的相同,后面的不能准确输出,但计算机并不报错。所以,浮点型变量该怎么来,还是要按规矩。

追问

难道说是电脑的问题?

追答

软件自己的问题,超出变量类型的位数之后的数值,计算机随机输出。

追问

不是这个意思,我编这个程序的时候它所有的位数都是准确输出的,包括7位后面的

追答

你在换个数试试,你看我的输出的数值就和你不一样

追问

还是一样的,估计是软件本身的问题吧

第2个回答  2013-11-20
输出控制符是不分单精度双精度的,之所以有%f和%lf,完全是为了书写规则的完善,没有实际意义。其实有些编译器已经都是双精度输出了,无论写%f还是%lf,效果都一样。
第3个回答  2013-11-20
浮点型变量分为单精度(float型)、双精度(double型)、长双精度(long double型)3类,单精度浮点型小数点后面有效数字为6~7位和双精度浮点型小数点后面有效数字为15~16位,单精度为32位,双精度为64位,8位为一个字节。
如果数值多于有效数字的时候,那么超出的部分值就是不可靠的值。

c语言单精度浮点型为什么可以输出16位,%f可以代替%lf
float 型,精度是 有效数字 6-7 位。多出的位的精度不保证。scanf() 输入格式 double 必须用 %lf 不允许用 %f printf() 输入格式 double 可以 用 %lf 也 允许 用 %f 这是编译器 这么定 的 游戏规则,没太多 道理。不是说 "%f 可以代替 %lf."...

c语言里%f跟%lf有什么区别?
1、代表的数据类型不同 f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。2、有效数字位数不同 单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。3、所能表示数的范围不同 单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38,双精度浮点的表示...

C语言问题%f和%lf的区别
C语言中的%f和%lf是用于输出浮点数的格式控制符,它们在精度和性能上存在一些关键差异。类型区分:%f适用于单精度浮点型数据(float),而%lf则对应于双精度浮点型数据(double)。精度差异:单精度浮点数的有效数字位数通常为6位,但可能最多可达7位,而双精度浮点数的精度更优,至少15位,甚至16位。

在printf函数中%f和%lf有区别么,为何答案是一样的?
float和double都可以用%f和%lf输出,一般没有差别,但是如下例子中就有了差别:float a = 9.1234567891234567890e+30;double b = 9.1234567891234567890e+30;\/\/printf("input a number:");\/\/scanf("%lf",&a);printf("%f\\n",a);printf("%lf\\n",b);getch();return 0;输出为:d和%ld的差...

C语言中printf函数中%f和%lf结果为什么一样
精度不同就是保留的小数位数不同啊。双精度保留的小数位数多。再看看别人怎么说的。

利用scanf时什么时候用%f和%lf
f就是float,lf就是long float,所以当你要输入float类型的数值时就用%f,当你要输入double类型数值时就用%lf

C语言中变量后面的f和lf有实际的作用吗?不加有区别吗?
float,单精度浮点型,对应%f.double,双精度浮点型,对应%lf.在用于输出时:float类型可以使用%lf格式,但不会有任何好处。double类型如果使用了%f格式可能会导致输出错误。在用于输入时:double 类型使用了%f格式,会导致输入值错误。float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。所以在...

c语言中float和double为什么输出会完全不一样?
float 和 double 在输出的时候其实都是用%f输出。c语言中,浮点型输出默认都是输出小数后6位。你为什么会认为double会输出到小数后15位呢,我感觉你是认为double的精确度有15位,float的精确度是7位,对吧,其实事实double和float在输出的时候都是默认输出到小数后6位,但是你可以用%m.nf 的格式控制 ...

C语言中 %f 与%lf 有什么区别?能否举一个简单易懂的例子?初学者,在线...
f 般对应单精度类型 float lf 般对应双精度类型 double f是单精度浮点型,输出的时候要满足6位小数。lf就是输出数值总长度为L,整数个数加小数个数,不足补空,右顶格起

c语言编程中%lf和%f,有啥区别,什么double,长短型,求大神解释
作输出格式控制字符串时效果一样,不说。作scanf的输入控制字符串时,%lf是双精度,8字节;%f是单精度,4字节;——也就是%lf对应double型就是,%f对应float型变量,用错了运行结果就出错。double的长型是10字节,精确到19位,double型是8字节,精确到16位,未见过“短double”型。但好多编译器下...

相似回答