11

我知道0在占位符的宽度之前放置任意数量的 's 会实现零填充。例如,printf("%02d", 6);打印06.

但是0在占位符的精度之前放置一个单曲有什么作用呢?例如,对于printf("%0.2lf", 0.123);printf("%.2lf", 0.123);,输出都是0.12

如果它什么都不做,是否有首选格式?

4

4 回答 4

9

它们是“等价的”。如果您要使用“%07.2”,那么它会有所不同,方法是在前面添加额外的零。

编辑:最初有“%04.2”,这当然没有任何区别,因为带有两位小数的浮点数总是4宽。

于 2013-04-02T13:25:14.590 回答
7


%3.2f //(print as a floating point at least 3 wide and a precision of 2)

%0.2lf //(print as a floating point at least 0 wide and a precision of 2)

%.2lf //(print as a floating point at least 0(default) wide and a precision of 2)

于 2013-04-02T13:29:17.810 回答
3

这些示例应显示差异:

"%0.2lf", 0.123-> 0.12(零填充最小宽度为 0,小数点后 2 位)。

"%6.2lf", 0.123-> __0.12(空格填充最小宽度为 6,小数点后 2 位)。

"%06.2lf", 0.123-> 000.12(零填充最小宽度为 6,小数点后 2 位)。

"%0.6lf", 0.123-> 0.123000(最小宽度为 0,小数点后 6 位)。

第一个零指定零填充,然后是最小宽度,默认值为 0。因此它本身实际上被忽略(因为您不能填充 0 宽度)。


顺便说一句,正确的形式是,而%f不是%lfprintf

于 2013-04-02T14:07:02.717 回答
1

块引用

基本上,当我们% w.p f用于输出时,w指的是用于显示值的最小位置数,p指的是小数点后的位数。 %3.2f小数点后有 3 个宽和 2 个数字的浮点数

%0.2f浮点至少 0 宽和小数点后 2 个数字

%.2f浮点至少 0(默认)宽和 2 精度)

但是不要误解 0 宽度,如果你使用%0.2f它可以自动调整它的最小宽度。

于 2013-04-02T13:37:46.027 回答