c语言下面%g采用%e格式输出时,为什么结果不一样?
*************************************************************************************...
*************************************************************************************************************************************
《C程序设计》(谭浩强 4th)上是这样描述的:
g格式符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0.如
double a = 12345678954321;
printf("%f\t%e\t%g\n",a,a,a);
输出结果为:
12345678954321.000000 1.234568e+013 1.23457e+013
可以从以上看到用%f格式输出占20列,用%e输出占13列,故%g采用%e格式输出。
*************************************************************************************************************************************
为什么小数位%e是6位,而%e是5位?不说按%e格式输出吗??
1.234568e+013 1.23457e+013
打错了。
为什么小数位%e是6位,而%g是5位?不说按%e格式输出吗??
1.234568e+013 1.23457e+013 展开
《C程序设计》(谭浩强 4th)上是这样描述的:
g格式符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0.如
double a = 12345678954321;
printf("%f\t%e\t%g\n",a,a,a);
输出结果为:
12345678954321.000000 1.234568e+013 1.23457e+013
可以从以上看到用%f格式输出占20列,用%e输出占13列,故%g采用%e格式输出。
*************************************************************************************************************************************
为什么小数位%e是6位,而%e是5位?不说按%e格式输出吗??
1.234568e+013 1.23457e+013
打错了。
为什么小数位%e是6位,而%g是5位?不说按%e格式输出吗??
1.234568e+013 1.23457e+013 展开
推荐于2017-09-22
展开全部
e 以指数形式输出单、双精度实数
E 以指数形式输出单、双精度实数
f 以小数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
E 以指数形式输出单、双精度实数
f 以小数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
更多追问追答
追问
%g四舍五入到整数输出
并没有四舍五入到整数啊,本来不用E表示的话,先不管他double,他就是个整数啊,小数全0舍什么啊
double a = 12345678954321
追答
dty@ubuntu:~$ cat t.c
#include <stdio.h>
int main(void)
{
double a = 12345678954321;
printf("%f\t%e\t%g\n",a,a,a);
return 0;
}
dty@ubuntu:~$ ./a.out
12345678954321.000000 1.234568e+13 1.23457e+13
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询