Mercurial > emacs
changeset 76307:cbba7c4947b7
(Formatting Strings): Clarify width, precision, flags.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 04 Mar 2007 18:25:36 +0000 |
parents | f64aa3622a9d |
children | 2a42ff51fc72 |
files | lispref/strings.texi |
diffstat | 1 files changed, 37 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/lispref/strings.texi Sun Mar 04 18:21:03 2007 +0000 +++ b/lispref/strings.texi Sun Mar 04 18:25:36 2007 +0000 @@ -821,18 +821,19 @@ @cindex field width @cindex padding - All the specification characters allow an optional ``width,'' which -is a digit-string between the @samp{%} and the character. If the + A specification can have a @dfn{width}, which is a signed decimal +number between the @samp{%} and the specification character. If the printed representation of the object contains fewer characters than -this width, then it is padded. The padding is on the left if the -width is positive (or starts with zero) and on the right if the -width is negative. The padding character is normally a space, but if -the width starts with a zero, zeros are used for padding. Some of -these conventions are ignored for specification characters for which -they do not make sense. That is, @samp{%s}, @samp{%S} and @samp{%c} -accept a width starting with 0, but still pad with @emph{spaces} on -the left. Also, @samp{%%} accepts a width, but ignores it. Here are -some examples of padding: +this width, @code{format} extends it with padding. The padding goes +on the left if the width is positive (or starts with zero) and on the +right if the width is negative. The padding character is normally a +space, but it's @samp{0} if the width starts with a zero. + + Some of these conventions are ignored for specification characters +for which they do not make sense. That is, @samp{%s}, @samp{%S} and +@samp{%c} accept a width starting with 0, but still pad with +@emph{spaces} on the left. Also, @samp{%%} accepts a width, but +ignores it. Here are some examples of padding: @example (format "%06d is padded on the left with zeros" 123) @@ -842,15 +843,16 @@ @result{} "123 is padded on the right" @end example +@noindent If the width is too small, @code{format} does not truncate the object's printed representation. Thus, you can use a width to specify a minimum spacing between columns with no risk of losing information. - In the following three examples, @samp{%7s} specifies a minimum width -of 7. In the first case, the string inserted in place of @samp{%7s} has -only 3 letters, so 4 blank spaces are inserted for padding. In the -second case, the string @code{"specification"} is 13 letters wide but is -not truncated. In the third case, the padding is on the right. + In the following three examples, @samp{%7s} specifies a minimum +width of 7. In the first case, the string inserted in place of +@samp{%7s} has only 3 letters, it needs 4 blank spaces as padding. In +the second case, the string @code{"specification"} is 13 letters wide +but is not truncated. In the third case, the padding is on the right. @smallexample @group @@ -873,32 +875,35 @@ @end smallexample @cindex precision in format specifications - All the specification characters allow an optional ``precision'' + All the specification characters allow an optional @dfn{precision} before the character (after the width, if present). The precision is a decimal-point @samp{.} followed by a digit-string. For the floating-point specifications (@samp{%e}, @samp{%f}, @samp{%g}), the precision specifies how many decimal places to show; if zero, the decimal-point itself is also omitted. For @samp{%s} and @samp{%S}, -the precision truncates the string to the given width, so -@samp{%.3s} shows only the first three characters of the -representation for @var{object}. Precision is ignored for other -specification characters. +the precision truncates the string to the given width, so @samp{%.3s} +shows only the first three characters of the representation for +@var{object}. Precision has no effect for other specification +characters. @cindex flags in format specifications -Immediately after the @samp{%} and before the optional width and + Immediately after the @samp{%} and before the optional width and precision, you can put certain ``flag'' characters. -A space character inserts a space for positive numbers, a plus character -inserts a plus sign (otherwise nothing is inserted for positive -numbers). These flags are ignored except for @samp{%d}, @samp{%e}, -@samp{%f}, @samp{%g}, and if both flags are present the space is -ignored. + @samp{+} as a flag inserts a plus sign before a positive number, so +that it always has a sign. A space character as flag inserts a space +before a positive number. (Otherwise, positive numbers start with the +first digit.) Either of these two flags ensures that positive numbers +and negative numbers use the same number of columns. These flags are +ignored except for @samp{%d}, @samp{%e}, @samp{%f}, @samp{%g}, and if +both flags are used, the @samp{+} takes precedence. -The flag @samp{#} indicates ``alternate form.'' For @samp{%o} it -ensures that the result begins with a 0. For @samp{%x} and @samp{%X} -the result is prefixed with @samp{0x} or @samp{0X}. For @samp{%e}, -@samp{%f}, and @samp{%g} a decimal point is always shown even if the -precision is zero. + The flag @samp{#} specifies an ``alternate form'' which depends on +the format in use. For @samp{%o} it ensures that the result begins +with a @samp{0}. For @samp{%x} and @samp{%X}, it prefixes the result +with @samp{0x} or @samp{0X}. For @samp{%e}, @samp{%f}, and @samp{%g}, +the @samp{#} flag means include a decimal point even if the precision +is zero. @node Case Conversion @comment node-name, next, previous, up