printf删除尾部0

时间:2015-10-29 07:32:57

标签: c

我有两个双号iMoveisa

b

然后double a = 1.01, b = 1.2345678 将输出

printf("%.4f %.4f", a, b)

但我想输出

1.0100  1.2345

即删除无用的0。

3 个答案:

答案 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或大于或等于   精确。尾随零从中的小数部分移除   结果;只有在后跟至少一个小数点时才会出现小数点   数字。