2013-09-18 4 views

ответ

4

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 

В последнем примере обратите внимание, что все числа и точка подсчитываются для длины поля и что число округлено.

+1

Лучше использовать 'foo' или какую-либо другую строку для'% s'. Число не имеет значения. –

+1

I _think_, что '0' может на самом деле означать прокладку с пробелами, что бессмысленно без минимальной ширины поля. –

+0

@JohannesKuhn спасибо. Я изменил ответ, чтобы учесть возможность того, что численный формат действительно нужен. – Edu

Смежные вопросы