clwn.net
当前位置:首页 >> C语言DouBlE类型输出 >>

C语言DouBlE类型输出

你理解错咯 double的意思是可以有16位有效数字 而在固定格式输出的时候,都默认的是6位 用double的时候f前面加l是没有效果的 你要输出长度,可以写,%0.8f,这样就是输出8个有效数字了

double要用%lf 你输入字符串时,肯定按了回车,而回车实际上输入了2个字符,第1个被用来确认scanf结束,还有一个仍然保留在了缓冲区内,被scanf("%c",&ch);读到了,这个字符是个控制字符,所以不可见.在任何读取字符的语句之前,你最好用fflush(stdin);来清空一下缓冲区.

对于double类型变量,其输出时的格式说明符一般用 %lf 因为double型是双精度浮点型,所以用long float型的格式输出符 %lf 而对于单精度浮点型float, 其输出格式说明符一般用%f 比如:double a = 3.1323; float b = 0.234; printf("%lf\n", a); // 输出结果为3.1323 printf("%f\n", b); // 输出结果为0.234

输出int , 用%d输出float, 用%f输出double,用 %lf输出long int ,用%ld

因为你指定的输出格式不对,printf()函数有个不成文的规定,使用%f对实数只输出小数点后6位的数字(不是有效数字,强制只输出小数点后6位),所以输出双精度型必须明确指定输出小数点后位数,要求使用%.nf格式n为小数点后数位! %lf格式定义的是scanf()函数的格式输入,不是输出. 输入和输出是2个不同的概念,请楼主仔细参考C库函数手册.

%d输出的是整数 试试%lf

在C语言中,打印double类型需要使用格式化输出函数printf.在使用是,double的通配符为%lf.比如定义double a = 1.234; 可以用 printf("%lf", a); 实现打印.默认打印6位小数,可以通过 printf("%.xlf",a); 来控制小数位数. 其中x为常数,代表打印的小数位数.除此外,还可以用 printf("%e", a); 实现以科学计数法来输出a.如果不想自行选择科学计数法还是正常小数输出,可以由系统自行选择最短情况,只能控制,只需要 printf("%g", a);

基本上所有支持类型转换的语言,在高精度向低精度转换时会直接截取高位,所以低位会丢失 另外你的第二个printf里边的输出格式控制符是%f(正确的应该是%lf),而变量是long double,在截掉低位之后发生数据丢失,所以会产生第一个结果.你把long去掉当然是正确的结果,至于在mac上和其他电脑的区别,只是机器的问题,但是值并没有改变

#include<stdio.h> main(){ double a; scanf("%f",&a); if(a>0) printf("%f>0\n",a); else if(a==0) printf("%f=0\n",a); else printf("%f<0\n",a); return 0; }

1、%f 是输出 float 型变量;%f 是输出 double 型变量;%Lf 是输出 long double 型变量.2、在C语言中,对于数值类型只有通过printf类函数输出这一种方式,比如printf, sprintf, fprintf等.这类函数输出时要求有格式符号,其中long double的格式

nczl.net | zxqs.net | hyqd.net | rprt.net | wlbx.net | 网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com