C语言里,实型变量double和float 的输出占位符,%lf和%f为什么在printf输出后都

C语言里,实型变量double和float 的输出占位符,%lf和%f为什么在printf输出后都是六位小数,double不是精度更高吗?

double精度更高,是指它存储的小数位数更多,但是输出默认都是6位小数,如果你想输出更多小数,可以自己控制,比如 “%.10lf” 就输出10位小数,望采纳
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-25
printf() 只会看到双精度数,printf 的 %f 格式总是得到 double,所以在 printf() 中使用 %f 跟 %lf 的输出显示效果是一样的。但是对于变量来说,double 类型比 float类型的精度要高。本回答被网友采纳
第2个回答  2015-04-25
默认保留6位小数。追问

那double所谓的双精度是怎么回事

追答

double是8位 float是4位。

...的输出占位符,%lf和%f为什么在printf输出后都
double精度更高,是指它存储的小数位数更多,但是输出默认都是6位小数,如果你想输出更多小数,可以自己控制,比如 “%.10lf” 就输出10位小数,望采纳

C语言中printf函数中%f和%lf结果为什么一样
f为double类型,需要两个字节表示,所以,printf在遇到%f时即将a,b的两个整型数据都读了去,而到了需要输出%d的时候,只能读取b的下一个单元,自然不是所期望的数据了。但是有朋友说%f是float类型,%lf才是double类型,具此我特意查阅了MSDN和Linux man手册,均没有发现此类描述,在linux man手册中,...

C语言中printf输出float和double都用%f么(scanf又如何)
1、printf输出float和double都可以用%f,同时double还可以用%lf。2、scanf输出float用%f,而double输出用%lf,不能混用。

在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的差...

double类型变量C语言里输出时的格式说明符是什么?
double类型变量C语言里输出时的格式说明符是%f。float和double类型的输出时的格式说明符都是%f,这是由于向那些未在原型中申明参数类型的函数传递参数时,float型会自动转为double型,所以用%lf和%f结果都一样。例如:double a = 3.1323;float b = 0.234;printf("%lf\\n", a); \/\/ 输出...

C语言float类型储存和printf输出问题
原因就是,你使用了lf输出,其实是将float x转换为一个double输出了。相当于 double y = x;,然后输出y,这样后面的数值其实是因为一个4位浮点数给8位浮点数赋值的时候,将x的真实存储以double的精度显示出来了。具体的说,这涉及float的二进制保存方式,如果你有兴趣,可以看看基础语法书上关于float...

C语言中关于double和float的问题!
因为格式化输入scanf要求数据类型和输入格式对应,你只要把scanf里面的%f改为%lf,double就能正常使用了。还有输出时候不管float和double,都用%f,因为C语言里面就是这么定义的,输出时候统一了,但是如果输出用%lf,大多数编译器也能正常输出。

为什么double类型输入(scanf)用%lf,输出(printf)用%f?
理解double类型输入(scanf)与输出(printf)分别使用%lf和%f的用法,关键在于理解float与double数据类型及其在内存中的存储方式。float和double是两种不同的浮点数类型。float是单精度浮点数,double是双精度浮点数,通常占用更多的内存空间,即double比float多4个字节。%f用于格式化float类型数据的输入和输出,而...

关于c语言中double与float的字符位数问题
如第三行,数字double正常,而float是0.3333333432674408,前7为正常输出,后面的9位由于不在精度范围,但程序告知仍然打印16位,此时就会将正确结果后面的位数也打印出来(尽管这些数字不正确---,可能是内存没有初始化,也可能是系统程序其他的数据)。不明白可以call我!!诚信ID ...

C 语言printf时,%f 与%lf 有什么区别, 难道不是double 用%lf, fl...
C++5.11编译后都没出现你说的这种情况。l %lf对printf函数来说是没有区别,因为传递给C语言可变参数函数的float类型变量都会被隐式提升为double, 所以这里的%f和%lf的效果是一致的。但是对于scanf,%f和%lf的含义就不一样了,因为传递的是指针。一般建议对于float类型使用%f,double类型使用 %lf ...

相似回答