用C语言格式化浮点值

时间:2017-09-17 10:49:59

标签: c printf output-formatting

我需要使用C语言中的.5语句将0.5打印为printf。 可以使用以下代码轻松完成。

printf("%03f", myfloatvalue);

但情况是myfloatvalue是动态的。所以我不确定它是3个字符的数字,可以是.5.56.567。在上述情况下,我需要打印为0.50.560.567

2 个答案:

答案 0 :(得分:6)

%g会打印浮点数的最短表示。

printf("%g",myfloatvalue);

答案 1 :(得分:3)

继续我对Florian的答案的评论,"%0g"的格式将打印最短的表示,其中前导零,例如

#include <stdio.h>

int main (void) {

    float f[] = { .5, .56, .567 };
    size_t n = sizeof f/sizeof *f;

    for (size_t i = 0; i < n; i++)
        printf ("%0g\n", f[i]);

    return 0;
}

示例使用/输出

$ ./bin/floatfmt
0.5
0.56
0.567