john at grulic.org.ar
Tue Sep 7 23:28:03 CEST 2004
On Tue, Sep 07, 2004 at 12:21:49PM -0700, Erik Max Francis wrote:
> Tor Iver Wilhelmsen wrote:
> > John Lenton <john at grulic.org.ar> writes:
> > > Is there any reason python's printf-style formatting is missing the
> > > (C99) '%a' specifier?
> > Because it's not very well known or used? A google for "C printf
> > format string" gave lots of resources, none of which had %a.
> It's not C99, anyway; my copy of C99 makes no mention of it (the only
> mention of %a is associated with gmtime.
hmm! weird. From printf(3):
a,A (C99; not in SUSv2) For a conversion, the double
argument is converted to hexadecimal notation (using the
letters abcdef) in the style [‐]0xh.hhhhp±d; for A
conversion the prefix 0X, the letters ABCDEF, and the
exponent separator P is used. There is one hexadecimal
digit before the decimal point, and the number of digits
after it is equal to the precision. The default
precision suffices for an exact representation of the
value if an exact representation in base 2 exists and
otherwise is sufficiently large to distinguish values of
type double. The digit before the decimal point is
unspecified for non‐normalized numbers, and nonzero but
otherwise unspecified for normalized numbers.
and looking at ISO/IEC 9899:1999 (E), it's on page 278, §22.214.171.124:
A double argument representing a floating-point number is
converted in the style [-]0xh.hhhh p±d, where there is one
hexadecimal digit (which is nonzero if the argument is a
normalized floating-point number and is otherwise unspecified)
before the decimal-point character235) and the number of
hexadecimal digits after it is equal to the precision; if the
precision is missing and FLT_RADIX is a power of 2, then the
precision is sufficient for an exact representation of the value;
if the precision is missing and FLT_RADIX is not a power of 2,
then the precision is sufficient to distinguish236) values of type
double, except that trailing zeros may be omitted; if the
precision is zero and the # flag is not specified, no decimalpoint
character appears. The letters abcdef are used for a conversion
and the letters ABCDEF for A conversion. The A conversion
specifier produces a number with X and P instead of x and p. The
exponent always contains at least one digit, and only as many more
digits as necessary to represent the decimal exponent of 2. If the
value is zero, the exponent is zero.
A double argument representing an infinity or NaN is converted in
the style of an f or F conversion specifier.
John Lenton (john at grulic.org.ar) -- Random fortune:
It seems intuitively obvious to me, which means that it might be wrong.
-- Chris Torek
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 196 bytes
Desc: Digital signature
More information about the Python-list