user2720323
user2720323

Reputation: 287

Regarding TCL format command

% format %2s 100
100

% format %.2s 100
10
%
%

% format %0.2s 100
10
%

I am not able to understand the difference between %2s and %.2s .

Can anyone explain me ?

Upvotes: 2

Views: 11464

Answers (1)

Edu
Edu

Reputation: 2052

TCL format command manual page specifies that format string can consist of six different parts. In this case second, third and fourth portions are of interest.

If there is a character from set [-+ 0#], they specify justification of the field, if there should be padding, sign shown of numbers, etc. 0 in the third example specifies that number should be padded with zeros instead of spaces. However, in this example there is nothing to pad.

If there is some other number without dot (2 in the first example), the number is interpreted as minimum field length and number is padded with spaces if necessary.

If there is a dot, the number after if interpreted as precision indicator and way it behaves differs depending on the other format parameters. For strings it means the maximum number of characters.

With

format %4.2s foo

you then get

  fo

That is, at most two characters are printed, but the field width is at minimum 4 characters.

If you are actually trying to print a number instead of string, then the sixth (the only mandatory) field is important. "s" means "print as is". For numbers you want to use for example "d" which means decimal (integer) or "f" for floating point. Check the manual for the whole list.

With

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

you get

 100

With

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

you get

00123.46

In the last example notice that all numbers and the dot are counted for the field length and that the number has been rounded.

Upvotes: 4

Related Questions