///C语言中printf区分双精度和单精度吗?为什么用lf输出不了双精度浮点数?
///输出结果竟然还是随机的?有些时候是负0,有些时候是正0
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%lf",1.1);
setbuf(stdin,NULL);
getchar();
return 0;
}
c语言中用printf输出是区分单精度和双度的。
如果用户在函数定义时定义为双精度,最后用printf输出时既可以用printf("%lf",a);也可以用printf("%f",a)输出。
用"lf”输出不了双精度可能是用户定义时定义为单精度,那么可能不能用双精度输出。
至于输出答案有时为正零有时为负零,那么可能是用户求出的答案超出精度范围了。
扩展资料:
1、printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出
信息。在编写程序时经常会用到此函数。函数的原型为:
int printf(const char *format, ...);
函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。
printf()函数的调用格式为:
printf("<格式化字符串>", <参量表>);
2、条件语句
条件语句可以给定一个判断条件,并在程序执行过程中判断该条件是否成立,根据判断结果执行不同的操作,从而改变代码的执行顺序,实现更多的功能。
参考资料来源:百度百科-条件语句
参考资料来源:百度百科-printf()
我代码中的是常量,C语言常量默认不就是double类型吗?要有后缀f的常量才是float类型.
追答哦,就是用双精度输出1.1吧···好像不论用单精度还是双精度都是保留小数点后六位,只是输出的数表示的范围比单精度大,在单精度可能溢出的数,在双精度下不会溢出····你用电脑是16位,32位还是64位的?
追问我问题中的程序是用minGW编译的,没有按照期望输出1.1
32位系统.
这个我就不懂了,我一般用的是visual c++,好像没出现这样的问题····
本回答被提问者和网友采纳C语言中printf区分双精度和单精度吗?为什么用lf输出不了双精度浮点数...
c语言中用printf输出是区分单精度和双度的。如果用户在函数定义时定义为双精度,最后用printf输出时既可以用printf("%lf",a);也可以用printf("%f",a)输出。用"lf”输出不了双精度可能是用户定义时定义为单精度,那么可能不能用双精度输出。至于输出答案有时为正零有时为负零,那么可能是用户求出...
C语言中printf区分双精度和单精度吗?为什么用lf输出不了双精度浮点数...
c语言中用printf输出是区分单精度和双度的,如果你在函数定义时定义为双精度,最后用printf输出时既可以用printf("%lf",a);也可以用printf("%f",a)输出。用"lf”输出不了双精度可能是你定义时定义为单精度,那么可能不能用双精度输出。至于输出答案有时为正零有时为负零,那么可能是你求出的答案超出精度范围了...
C语言问题%f和%lf的区别
C语言中的%f和%lf是用于输出浮点数的格式控制符,它们在精度和性能上存在一些关键差异。类型区分:%f适用于单精度浮点型数据(float),而%lf则对应于双精度浮点型数据(double)。精度差异:单精度浮点数的有效数字位数通常为6位,但可能最多可达7位,而双精度浮点数的精度更优,至少15位,甚至16位。
C语言问题%f和%lf的区别
由于精度的原因,输出%lf和%f的数据不同,可能会造成错误。主要有一下四点区别:1、代表的数据类型不同 f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。2、有效数字位数不同 单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。3、所能表示数的...
C语言程序设计问题:关于单精度和双精度输出位数问题……
32位环境printf的%f和%lf都是double,没有单精度的输出。f的默认小数位数就是6位不管有没有l。是float直接从十进制数字转换来的情况下十进制可靠有效数字是7位。float的有效数字永远是二进制24位。
关于C语言中浮点型数据
printf("%f\\n",c);改为:printf("%.12f\\n",c); \/\/保留小数点12位
C语言如何输出双精度浮点型数据
1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2、short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例如:include <stdio.h> int main(){double x;sh...
printf能用% lf输出数据吗?
答:1.C语言中printf输出float和double都可以用%f,而double型数据还可以用%lf。2.scanf当中若是对双精度的变量赋值是必须是%后跟lf,而printf当中可以用%f也可以用%lf没有限制。
在c语言中,单精度浮点数与双精度浮点数的区别与联系。
在C语言中,单精度浮点数(float)和双精度浮点数(double)类型都是用来储存实数的,双精度是用记忆较多,有效数字较多,数值范围较大。两种类型对应的格式字符也有不同。 以Turbo C 为例: float 单精度浮点数使用记忆:4 字符(32 位元)有效数字:6-7 位数值范围:??3.4e38 至 ??3.4e??38...
c语言浮点数单精度和双精度的问题
double 类型的时候输入和输出是用%lf而不是%lf, 所以会出错。scanf("%f",&a); 如果是double类型,这一句改为: scanf("%lf",&a); 就正确了。其他的类似。