After the %
sign (and before the format code letter), zero or more
of the following flags may appear:
#
(pound sign)
Specifies that the value should be printed using an "alternate format",
depending on the format code. For format code(s):
%o
A non-zero result will be prepended with 0
(zero) in the output.%x
, %X
A non-zero result will be prepended with 0x
or 0X
.%e
, %E
, %f
, %g
, %G
The result will always contain a decimal point, even if no
digits follow it (normally, a decimal point appears in the
results of those conversions only if a digit follows). For
%g
and %G
conversions, trailing zeros are not
removed from the result as they would otherwise be.%b
A non-zero result will be prepended with 0b
.
0
(digit zero)
Specifies zero padding. For all numeric formats, the output is
padded on the left with zeros instead of spaces.-
(negative field width)
Indicates that the result is to be left adjusted in the output
field instead of right. A -
overrides a 0
flag
if both are present. (For the %L
extended code, this
flag indicates the argument is a latitude.)
(a space)
Indicates that a space should be left before a positive number
produced by a signed format (e.g. %d
, %i
, %e
,
%E
, %f
, %g
, or %G
).+
(plus sign)
If given with a numeric code, indicates that a sign always be
placed before a number produced by a signed format. A +
overrides a space if both are used.
For the %L
extended code, a +
flag indicates the
argument is a location - latitude and longitude, or geocode.
If given with a string code, +
indicates that if the string
value exceeds the given precision, truncate the string by a
further 3 bytes, and append an ellipsis ("...
"). This
can be useful to give an indication of when a value is being
truncated on display. String code support was added in version
6.00.1340835555 20120627.
Examples:
<fmt "%#x %#x" 42 0> <fmt "%+d %+d" 42 -42>
0x2a 0 +42 -42
Following any flags, an optional width number may be given. This
indicates the minimum field width to print the value in (unless using
the m
flag; see Metamorph Hit Mark-up, here).
If the printed value is narrower, the output will be padded with
spaces on the left. Note the horizontal spacing in this example
(output is the right column):
Test results: Test results:
<$x = 42 12345 87654321 912> 42
<LOOP $x> 12345
<fmt "%6d" $x> 87654321
912
</LOOP>
After the width, a decimal point (.
) and precision number
may be given. For the integer formats (%d
, %i
, %o
,
%u
, %x
and %X
), the precision indicates the minimum
number of digits to print; if there are fewer the output value is
prepended with zeros. For the %e
, %E
and %f
formats, the precision is the number of digits to appear after the
decimal point; the default is 6. For the %g
and %G
formats, the precision is the maximum number of significant digits
(default 6). For the %s
(string) format, it is the maximum
number of characters to print. Examples:
<fmt "Error number %5.3d:" 5>
Error number 005:
<fmt "The %1.6s is %4.2f." "answering machine" 123.456789>
The answer is 123.46.
The field width or precision, or both, may be given as a parameter
instead of a digit string by using an *
(asterisk) character
instead. In this case, the width or precision will be taken from
the next (integer) argument. Example (note spacing):
<$width = 10> The value is:
<$prec = 2> 123.46
The value is:
<fmt "%*.*f" $width $prec 123.4567>
An h
or l
(el) flag may appear immediately before the
format code for numeric formats, indicating a short or long value
(l
has a different meaning for %H
, %/
and
%:
, see here). These flags are for
compatibility with the C
function printf()
, and are not
generally needed in Vortex because integers are automatically promoted
to the largest type available in version 3.01.984500000 20010312 and
later). In these versions, the w
flag may be given to indicate
a "whopping" (largest available, generally 64-bit) value.