该%g
说明称
使用最短的表示形式:
%e
或%f
例如,
544666.678
写成544667
好像%.6g
使用它就可以了。
但是写入的数字与使用5.4467E+5
时相同%.5g
。
为什么%e
在这里544670
(%f
)比它短一些,为什么要使用指数符号()。
谁能帮我理解吗?这是错误吗?
同样,44.35
写成44.4
何时%.1f
使用也可以。但44.55
写成44.5
何时%.1f
使用。为什么不写成44.6
?这是错误吗?
使用最短的表示形式:%e或%f不够精确。
C11 7.21.6.1
fprintf
功能甲
double
表示浮点数参数被转换风格f
或e
(或风格F
或E
在A的情况下G
转换说明),根据值转换和精度。让P
如果非零,等于精度6
如果省略了精度,或1
如果精度是零。然后,如果样式E的转换的指数为X
:—如果是
P > X ? ?4
,则转换具有样式f
(或F
)和精度P ? (X + 1)
。—否则,将使用style
e
(或E
)和precision进行转换P ? 1
。最后,除非使用该
#
标志,否则将从结果的小数部分中删除所有结尾的零,如果没有剩余的小数部分,则将删除小数点字符。
因此在%.5g
with 544666.678
,P
is 5
和X
as 的示例中5
,根据规则,使用样式e
是因为P > X ? ?4
false。