当我在 中%g
用作格式说明符时printf()
,有时它会在小数点后四舍五入到 2 位,有时到 3 位,有时到 4 位......它是怎么做到的?
实际上我们应该在哪里使用%g
而不是%f
或%e
用于浮点数?
当我在 中%g
用作格式说明符时printf()
,有时它会在小数点后四舍五入到 2 位,有时到 3 位,有时到 4 位......它是怎么做到的?
实际上我们应该在哪里使用%g
而不是%f
或%e
用于浮点数?
格式说明%g
符会像%f
会那样进行舍入,但如果%f
会导致4.234000
,%g
则将省略尾随零并 print 4.234
。
%g
应该在输出格式中最有意义的情况下使用某些数字打印为12345.6
,而稍微大一点的数字将打印为1.235e04
。
%g
%e
自动在使用和取决于值之间“翻转” %f
,以尝试显示尽可能多的信息,就像手持计算器一样。此外,%g
不包括尾随零和小数点。
对于%f
转换,“精度”是小数点后的位数,而对于%g
它是有效位数。
两种情况下的默认精度都是 6。
"double 参数以 f 或 e 样式转换(或 F 或 E 用于 G 转换)。精度指定有效位数。如果缺少精度,则给出 6 位;如果精度为零,则对其进行处理as 1. 如果转换后的指数小于 -4 或大于或等于精度,则使用样式 e。从结果的小数部分删除尾随零;仅当小数点后跟 at 时才会出现小数点至少一位数。”
我并不是说“RTFM”,但您可能会在有关控制精度和长度的手册部分中找到您要查找的内容。