% format %2s 100
100
% format %.2s 100
10
%
%
% format %0.2s 100
10
%
Я не могу понять разницу между% 2s и% .2s.Относительно команды формата TCL
Может ли кто-нибудь объяснить мне?
% format %2s 100
100
% format %.2s 100
10
%
%
% format %0.2s 100
10
%
Я не могу понять разницу между% 2s и% .2s.Относительно команды формата TCL
Может ли кто-нибудь объяснить мне?
TCL format command manual page указывает, что строка формата может состоять из шести различных частей. В этом случае интерес представляют вторая, третья и четвертая части.
Если есть символ из набора [- + 0 #], они определяют выравнивание поля, если должно быть заполнение, знак, обозначенный цифрами, и т. Д. 0 в третьем примере указывает, что номер должен быть дополнен нулями вместо пробелов. Однако в этом примере ничего не делать.
Если в этом примере есть другое число без точки (2 в первом примере), это число интерпретируется как минимальная длина поля, а число заполняется пробелами, если необходимо.
Если точка есть, после нее интерпретируется как показатель точности и способ ее поведения в зависимости от других параметров формата. Для строк это означает максимальное количество символов.
С
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
В последнем примере обратите внимание, что все числа и точка подсчитываются для длины поля и что число округлено.
Лучше использовать 'foo' или какую-либо другую строку для'% s'. Число не имеет значения. –
I _think_, что '0' может на самом деле означать прокладку с пробелами, что бессмысленно без минимальной ширины поля. –
@JohannesKuhn спасибо. Я изменил ответ, чтобы учесть возможность того, что численный формат действительно нужен. – Edu