C语言中的printf函数
C语言中的%g是printf()函数的一个输出格式化类型,它表示以%f%e中较短的输出宽度
输出单双精度实数,在指数小于-4或者大于等于精度时使用%e格式
%02g : 02表示不足两位,前面补0输出;超过两位的不影响
[root@localhost seq]# printf "%02X\n" 0x123
123
[root@localhost seq]# printf "%02X\n" 0x1
01
X 表示以十六进制形式输出
%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法
printf("%g\n", 0.00001234);
printf("%g\n", 0.0001234);
printf("%.2g\n", 123.45);
printf("%.2g\n", 23.45);
上面四句输出结果为:
1.234e-05
0.0001234
1.2e+02
23
对于指数小于-4或者大于给定精度的数值,按照%e的控制输出,否则按照%f的控制输出.
[root@localhost seq]# printf "%g" 0.00001234
1.234e-05[root@localhost seq]# printf "%g"^C.00001234
[root@localhost seq]# printf "%g\n" 0.00001234
1.234e-05
[root@localhost seq]# printf "%g\n" 0.0001234
0.0001234
[root@localhost seq]# printf "%.2g\n" 123.45
1.2e+02
[root@localhost seq]# printf "%.2g\n" 23.45
23
拓展资料
转换说明及作为结果的打印输出%a 浮点数、十六进制数字和p-记数法(C99)
%A 浮点数、十六进制数字和p-记法(C99)
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0f的无符号十六进制整数
%% 打印一个百分号 使用printf ()函数 printf()的基本形式: printf("格式控制字符串",变量列表)
g格式符,用来输出实数,输出格式为f格式或e格式,系统根据数据占宽度m大小,自动选择占宽度较小的某种格式输出,g格式符不输出小数点后无意义的零。
例:
main()
{
float x=654.321;
printf("%f,%e,%g",x,x,x);
}
打印输出:654.320984,6.543210e+002,654.321(其中输出的654.320984是因为在内存中的存储误差引起的)。
⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式
printf()输出格式类型说明:
输出类型 格式字符意义
a 浮点数、十六进制数字和p-计数法(C99)
A 浮点数、十六进制数字和p-计数法(C99)
c 输出单个字符
d 以十进制形式输出带符号整数(正数不输出符号)
e 以指数形式输出单、双精度实数 指数标识为e
E 以指数形式输出单、双精度实数 指数标识为E
f 以小数形式输出单、双精度实数
G 以%f%E中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%E格式
i 有符号十进制整数(与%d相同)
o 以八进制形式输出无符号整数(不输出前缀O)
p 输出内存地址形式数据(16进制)
s 输出字符串
x 以十六进制形式输出无符号整数(不输出前缀OX)
X 以十六进制形式输出无符号整数(不输出前缀OX
u 以十进制形式输出无符号整数
PS: 有关%g输出的补充说明
%g用于打印浮点型数据时,会去掉多余的零,至多保留六位有效数字(不同于%e的默认保留小数点后6位)
当%g用于打印超过6位的浮点型数据时,因为精度问题,%f不得不输出一个不精确的超过六位的数字,%e也是同样,而%g此时会选择%e格式进行输出,并且按第一条要求,去掉多余的零,并且四舍五入到6位数字。这是《C Primer Plus》中所说的超过精度的时候的情况。 (可见,这个6位,是按float类型精度来计算的。)
当一个数字的绝对值很小的时候,要表示这个数字所需要的字符数目就会多到让人难以接受。举例而言,如果我们把π*10^-10写作0.00000000000314159就会显得非常丑陋不雅,反之,如果我们写作3.14159e-10,就不但简洁而且易读好懂。当指数是-4时,这两种表现形式大小相同。对于比较小的数值,除非该数的指数小于或者等于-5,%g才会采用科学技术发来表示,即,以%e的格式进行输出。