在float类型上使用printf,.precision时如何删除0

时间:2014-09-08 03:48:22

标签: c printf precision

我有这行代码:

printf("%.3d%.2f\n", ones, value);

但是,这不起作用,因为%.2f会产生0.25

我是否可以添加一个修饰符,使其只打印.25,即删除0?

1 个答案:

答案 0 :(得分:1)

在C中,不,没有。

可以做的是打印到临时缓冲区,然后根据它调整您打印的内容:

char buff[30];
sprintf (buff, "%.2f", value);              // Get value to temp buffer
if ((buff[0] == '0') && (buff[1] == '.'))   // Starts with "0."?
    printf ("%s", buff+1);                  // Yes, skip the zero..
else
    printf ("%s", buff);                    // No, print the lot.

但是,看起来就像你总是保证浮点小于1,因为你在输出中一起运行整数和浮点值。如果是这种情况,你可以使用类似的东西:

printf ("%6.2f", value + ones);