强制printf显示确定的位数并删除剩余的0

时间:2017-01-11 14:16:55

标签: c printf precision

我不知道如何告诉printf打印一个可变精度的双精度。

我实际上在做什么:

int main(void)
{
    int digits = 4;

    printf("%0.*f\n", digits, 0.123456789);
    printf("%0.*f\n", digits, 5.9);

    return (0);
}

我实际上有*和数字变量的变量精度,但它仍然在最后一个数字后打印剩余的0。

为了说明我的问题,我得到的是:

0.1234
5.9000

这就是我想要的:

0.1234
5.9

你能帮我吗?

1 个答案:

答案 0 :(得分:4)

您需要使用%g代替%f

#include <stdio.h>

int main(void)
{
    int digits = 4;
    printf("%0.*g\n", digits, 0.123456789);
    printf("%0.*g\n", digits, 5.9);

    return 0;
}

输出:

0.1235 
5.9

LIVE DEMO