C语言基本知识2.6%g的用法
-
- 在 C 语言中,
%g
(对应的还有%G
,%G
和%g
的区别仅在于输出的字母是大写还是小写)是用于格式化输出浮点数的格式控制符。它会根据要输出的浮点数的值自动选择合适的输出格式,要么是小数形式(定点数形式),要么是科学计数法形式。其选择规则是基于输出的精度和数值的大小。具体来说,如果指数部分小于 -4 或者大于等于精度指定的值(默认精度是 6),则使用科学计数法形式;否则,使用小数形式。 %g
格式控制符的输出示例-
#include <stdio.h> int main() { double num1 = 123.456; double num2 = 0.0000123456; double num3 = 1234567.0; printf("%g\n", num1); printf("%g\n", num2); printf("%g\n", num3); return 0; }
在这个例子中,
num1
(值为123.456
)会以小数形式输出,结果为123.456
;num2
(值为0.0000123456
)因为指数部分小于 -4,所以会以科学计数法形式输出,结果为1.23456e - 05
;num3
(值为1234567.0
)因为其值较大,超过了默认精度对应的范围,所以也会以科学计数法形式输出,结果为1.23457e+06
(注意这里会进行四舍五入,因为默认精度是 6 位有效数字)。 - 精度控制与
%g
- 可以通过在
%g
前面加上数字来指定精度,例如%.5g
表示保留 5 位有效数字。精度指定了有效数字的位数,这会影响%g
是采用小数形式还是科学计数法形式输出,以及具体的输出内容。 - 示例代码如下:
- 可以通过在
- 对于
num1
,输出为123.46
(保留 5 位有效数字,采用小数形式并四舍五入);对于num2
,输出为1.2346e - 05
(保留 5 位有效数字,采用科学计数法形式并四舍五入)。 %g
与%f
和%e
的比较%f
格式控制符总是以小数形式(定点数形式)输出浮点数,并且可以通过指定小数点后的位数来控制精度,例如%.2f
会输出小数点后有 2 位数字的小数。%e
(或%E
)格式控制符总是以科学计数法形式输出浮点数,例如1.23456e+02
。- 而
%g
结合了%f
和%e
的特点,会根据数值自动选择更合适的输出形式,这使得它在输出浮点数时更加灵活,特别是当需要输出的浮点数范围较广时。
- 在 C 语言中,