C printf中%g的奇怪输出
据我所知,C printf中%g的奇怪输出,c,printf,C,Printf,据我所知,%g在printf中的转换规则是,如果指数小于-4或大于或等于精度,则使用%e或%e;否则请使用%f。不打印尾随零和尾随小数点 然而,下面的输出非常奇怪: printf("%g %G\n", 10.123456789, 10.12345); // output: 10.1235 10.1235 因为%g的精度是6,我猜它会输出1.012346e+01,但它不会。谁能帮我理解这一点?来自: 如果不为零,则p等于精度;如果未指定精度,则p等于6;如果未指定精度,则p等于10. 然后,
%g
在printf
中的转换规则是,如果指数小于-4
或大于或等于精度,则使用%e
或%e
;否则请使用%f
。不打印尾随零和尾随小数点
然而,下面的输出非常奇怪:
printf("%g %G\n", 10.123456789, 10.12345); // output: 10.1235 10.1235
因为%g
的精度是6,我猜它会输出1.012346e+01
,但它不会。谁能帮我理解这一点?来自:
如果不为零,则p等于精度;如果未指定精度,则p等于6;如果未指定精度,则p等于10. 然后,如果样式为E的转换的指数为X:
- 如果P>X≥ −4、转换方式为f或f,精度为P− 1.− 十,
- 否则,将使用样式e或e和精度P进行转换− 1. 李>
p
等于6
。指数X
为1
。这意味着P>X≥ −4
为真(6>1≥ −4
),输出用f
(或f
)说明符和精度6-1-1
(等于4
,是您看到的精度)打印
简而言之,输出实际上就是它应该是的样子。来自:
如果不为零,则p等于精度;如果未指定精度,则p等于6;如果未指定精度,则p等于10. 然后,如果样式为E的转换的指数为X:
- 如果P>X≥ −4、转换方式为f或f,精度为P− 1.− 十,
- 否则,将使用样式e或e和精度P进行转换− 1. 李>
p
等于6
。指数X
为1
。这意味着P>X≥ −4
为真(6>1≥ −4
),输出用f
(或f
)说明符和精度6-1-1
(等于4
,是您看到的精度)打印
简而言之,输出实际上就是它应该的样子。…
printf(“%g%E\n
…)。请阅读printf@l“L'L你是什么意思?关于输出:10.1235 10.1235
,有什么奇怪的地方吗?@kameiha:在选择精度(例如printf()%.2e%.23E\n“
)…我不小心在那里留下了g
的第一条评论…意思是e
…printf(“%g%e\n
))。请阅读printf@l'L'L你是什么意思?关于输出:10.1235 10.1235
,有什么很奇怪的地方吗?@kameiha:你应该能够使用e
,或E
。。。在选择精度时(例如,printf(“%.2e%.23E\n”)
)。。。我第一次不小心把g
放在那里的评论。。。意思是e
。谢谢,我以前误解了%g
。谢谢,我以前误解了%g
。