2
% format %2s 100
100

% format %.2s 100
10
%
%

% format %0.2s 100
10
%

我无法理解 %2s 和 %.2s 之间的区别。

谁能解释我?

4

1 回答 1

4

TCL 格式命令手册页指定格式字符串可以由六个不同的部分组成。在这种情况下,第二、第三和第四部分是有意义的。

如果有来自 set [-+ 0#] 的字符,它们指定字段的对齐方式,如果应该有填充,显示数字的符号等。第三个示例中的 0 指定应该用零而不是空格填充数字. 然而,在这个例子中没有什么要填充的。

如果有其他不带点的数字(第一个示例中为 2),则该数字被解释为最小字段长度,必要时用空格填充数字。

如果有一个点,则 if 后面的数字被解释为精度指示符,它的行为方式因其他格式参数而异。对于字符串,它表示最大字符数。

format %4.2s foo

然后你得到

  fo

也就是说,最多打印两个字符,但字段宽度至少为 4 个字符。

如果您实际上是在尝试打印数字而不是字符串,那么第六个(唯一必填)字段很重要。“s”表示“按原样打印”。对于要使用的数字,例如“d”表示十进制(整数)或“f”表示浮点数。检查手册以获取整个列表。

format %4.2d 100 # Print with at least two numbers and with field width of 4 characters

你得到

 100

format %08.2f 123.45678 # Field width 8, pad with zeros, print two decimals

你得到

00123.46

在最后一个示例中,请注意所有数字和点都计入字段长度,并且该数字已四舍五入。

于 2013-09-18T08:25:41.687 回答