当前位置:  开发笔记 > 编程语言 > 正文

%g在printf中的工作方式

如何解决《%g在printf中的工作方式》经验,为你挑选了1个好方法。

%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?这是错误吗?



1> Yu Hao..:

使用最短的表示形式:%e或%f不够精确。

C11 7.21.6.1 fprintf功能

double表示浮点数参数被转换风格fe(或风格FE在A的情况下G转换说明),根据值转换和精度。让P如果非零,等于精度6如果省略了精度,或1如果精度是零。然后,如果样式E的转换的指数为X

—如果是P > X ? ?4,则转换具有样式f(或F)和精度P ? (X + 1)

—否则,将使用style e(或E)和precision进行转换P ? 1

最后,除非使用该#标志,否则将从结果的小数部分中删除所有结尾的零,如果没有剩余的小数部分,则将删除小数点字符。

因此在%.5gwith 544666.678Pis 5Xas 的示例中5,根据规则,使用样式e是因为P > X ? ?4false。

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有