我是新手,我正在尝试将float
值最多打印到两侧的四个位置。例如,11.3
将是0011.3000
。为此,我使用以下行:-
float t = 11.3;
printf("%4.4f", t);
但是我得到11.3000
。所以,甚至有可能我要做什么?如果是,那怎么办?谢谢
答案 0 :(得分:5)
您的代码段中f
的类型不正确,应该为float
或double
。
要产生前导零,请使用0
printf
修饰符并指定期望的最小宽度,在您的示例中为9个字符(在.
加上.
之前的4个位置.
之后再加上4个地方。
因此格式为%09.4f
。
代码如下:
#include <stdio.h>
int main() {
double t = 11.3;
printf("%09.4f\n", t);
return 0;
}
输出:
0001.3000
但是请注意,如果数字为负数,则您只会在.
之前获得3个位置,并且该数字的绝对值太大(<= {-999.99995
或> = {{1} }),输出将超过9个字符。如果您也想在9999.99995
之前也有4个负值位置,则应使用.
:如果该数字为正,则数字前面将带有一个空格,如果为负,则数字之前将带有一个% 010.4f
:< / p>
-
输出:
#include <stdio.h>
int main() {
double t = 11.3;
printf("%09.4f\n", t);
printf("% 010.4f\n", t);
printf("% 010.4f\n", -t);
return 0;
}
答案 1 :(得分:2)
格式规范的第一部分是您要打印的字段的宽度,而不是小数点前的位数。所需的输出中有9个字符,左侧有零填充,所以
float t = 11.3;
printf("%09.4f", t);
例如,如果数字的整数部分太大,则可能会崩溃。为了更好地控制水平,请使用整数:
float t = 11.3;
int i, f;
i = (int)t;
f = (int)((t - i) * 10000 + 0.5);
printf("%04d.%04d", i, f);
所有这些假设为正数。此处显示的两个示例都不能与否定词一起正常工作。
答案 2 :(得分:2)
float t = 11.3;
printf("%4.4f", t);
在您的代码中,前4个。表示要打印的字符总数。 和后跟4。表示小数点后的字符数。 由于您需要xxxx.xxxx,因此您应该这样写:
printf("%9.4f", t);