虽然我使用%gprintf()格式说明,有时向上舍高达小数点后2位,有时高达3个地方,someimes最多4个地方......怎么这样做?

其实,我们应该用%g代替%f%e浮点数?

有帮助吗?

解决方案

%g格式说明执行其四舍五入就像%f会做,但如果%f将导致4.234000,然后将%g省略尾随零,并打印4.234

当它是最有意义的在输出格式的一些数字印刷作为%g,而一个稍微大数目将被打印为12345.6应使用1.235e04

其他提示

%g自动“翻转”使用%e%f取决于值,以试图显示尽可能多的信息尽可能之间,以相同的方式作为手持计算器做。 此外,与%g尾随零和小数点不包括在内。

有关的%f转换时,“精确”是的位数的小数点后,而对于%g它的的显著的位数。结果 默认精度是在两种情况下6。

printf的手册

“双参数被转换在f或e样式(或F或E为               G转换)。精度指定显著位数。如果缺少精度,6位给出;               如果精度是零,因为1.款E用于将被处理               如果从它的转换的指数小于-4或大于               小于或等于精度。尾随零将从删除               结果的小数部分;小数点只出现               如果是,然后在至少一个数位。“

我的意思不是“RTFM”,但你可能会发现你在使用手册中寻找有关控制精度和长度的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top