虽然我在%g
中使用printf()
作为格式说明符,但有时它会在小数点后向上舍入到2个位置,有时最多可达3个位置,有时会达到4个位置......它是如何做到的?
实际上我们应该使用%g
而不是%f
或%e
来表示浮点数?
答案 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)
“双参数以样式f或e(或F或E)转换 G转换)。精度指定有效位数。如果精度丢失,则给出6位数字; 如果精度为零,则将其视为1.使用样式e 如果转换的指数小于-4或更大 超过或等于精度。尾随零被删除 结果的小数部分;小数点仅出现 如果后跟至少一位数字。“
我不是指“RTFM”,但你可能会在控制精度和长度的手册章节中找到你想要的东西。