%g如何舍入浮点数?

时间:2010-10-01 13:05:03

标签: c floating-point floating-point-conversion

虽然我在%g中使用printf()作为格式说明符,但有时它会在小数点后向上舍入到2个位置,有时最多可达3个位置,有时会达到4个位置......它是如何做到的?

实际上我们应该使用%g而不是%f%e来表示浮点数?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

%g格式说明符会像%f那样进行舍入,但如果%f会产生4.234000,那么%g将省略尾随零和打印4.234

如果输出格式中最有意义的是某些数字打印为%g,则应使用

12345.6,而稍微大一些的数字将打印为1.235e04

答案 2 :(得分:4)

对于%f转化,“精确度”是小数点后的位数,而对于%g,它是重要<的数量< / strong>数字。
两种情况下的默认精度均为6。

答案 3 :(得分:3)

来自printf manual

“双参数以样式f或e(或F或E)转换               G转换)。精度指定有效位数。如果精度丢失,则给出6位数字;               如果精度为零,则将其视为1.使用样式e               如果转换的指数小于-4或更大               超过或等于精度。尾随零被删除               结果的小数部分;小数点仅出现               如果后跟至少一位数字。“

我不是指“RTFM”,但你可能会在控制精度和长度的手册章节中找到你想要的东西。