我有两个双号iMoveis
和a
b
然后double a = 1.01, b = 1.2345678
将输出
printf("%.4f %.4f", a, b)
但我想输出
1.0100 1.2345
即删除无用的0。
答案 0 :(得分:2)
%.4f
将始终通过填充零来打印最多4位小数。
您可以移除%.4f
并使用%g
打印具有填充零的精确值
克,G double参数以样式f或e(或G或E转换为G转换)转换。精度指定有效位数。如果精度丢失,则给出6位数字;如果精度为零,则将其视为1.如果转换的指数小于-4或大于或等于精度,则使用样式e。尾随零从结果的小数部分中删除;只有在后跟至少一位数字时才会出现小数点。
答案 1 :(得分:2)
不是你想要的,但你可以使用%g
代替%f
,如下所示:
double a = 1.01, b = 1.2345678;
printf("%.4g %.4g\n", a, b);
精度值的解释方式与“f”格式不同。 “f”的精度指定小数点后的位数。 “g”的精度指定了打印的最大有效位数。
答案 2 :(得分:2)
如果你指定宽度......那么你将获得那个宽度。
只需改为使用“%g”或“%f”。
从“男人”页面:
http://linux.die.net/man/3/printf
g,G
双参数以样式f或e(或G的F或E)转换 转换)。精度指定重要数量 数字。如果精度丢失,则给出6位数字;如果 精度为零,它被视为1.如果指数,则使用样式e 从它的转换小于-4或大于或等于 精确。尾随零从中的小数部分移除 结果;只有在后跟至少一个小数点时才会出现小数点 数字。