如何使用 %g 对浮点数进行四舍五入?

3

当我在printf()中使用%g作为格式说明符时,有时它会四舍五入到小数点后2位,有时是3位,有时是4位...它是如何做到的?

实际上,我们应该在什么情况下使用%g而不是%f%e来处理浮点数?

4个回答

5
< p > %g 根据值自动在%e%f之间切换,以尽可能显示更多信息,就像手持计算器一样。此外,使用%g时不包括尾随零和小数点。


5
%g 格式说明符的舍入方式与 %f 相同,但如果 %f 的结果为 4.234000,则 %g 将忽略尾随零并打印出 4.234
在输出格式中一些数字被打印为 12345.6,而稍大的数字将被打印为 1.235e04 时,应使用 %g

4
对于%f转换,"精度"是小数点后的数字个数,而对于%g,它是"有效数字"的个数。
在两种情况下,默认精度均为6。

3
printf手册中得知:
双精度浮点数会以f或e风格进行转换(对于G的转换将会是F或E)。精度指定了有效数字的数量。如果没有给出精度,则默认为6位;如果精度为0,则视为1。当指数小于-4或大于等于精度时,使用e风格。结果的小数部分将删除尾随零;仅当小数点后至少有一位数字时才会出现小数点。
我并不是要让你去“RTFM”,但你可能会在手册中关于控制精度和长度的章节中找到你需要的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接