[Python-Dev] [Python-checkins] r64424 - in python/trunk:Include/object.h Lib/test/test_sys.py Misc/NEWSObjects/intobject.c Objects/longobject.c Objects/typeobject.cPython/bltinmodule.c (original) (raw)
"Martin v. Löwis" martin at v.loewis.de
Thu Jun 26 23:47:31 CEST 2008
- Previous message: [Python-Dev] [Python-checkins] r64424 - in python/trunk:Include/object.h Lib/test/test_sys.py Misc/NEWSObjects/intobject.c Objects/longobject.c Objects/typeobject.cPython/bltinmodule.c
- Next message: [Python-Dev] [Python-checkins] r64424 - in python/trunk:Include/object.h Lib/test/test_sys.py Misc/NEWSObjects/intobject.c Objects/longobject.c Objects/typeobject.cPython/bltinmodule.c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Guido van Rossum wrote:
On Thu, Jun 26, 2008 at 1:46 PM, Mark Dickinson <dickinsm at gmail.com> wrote:
I'd be delighted with '%a' support. Remind me what %a does?
It's a C99 feature. From the spec (7.19.6.1p8)
a,A A double argument representing a floating-point
number is converted in the style [-]0xh.hhhhp±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 decimal-
point 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.
Footnotes 235) Binary implementations can choose the hexadecimal digit to the left of the decimal-point character so that subsequent digits align to nibble (4-bit) boundaries.
236) The precision p is sufficient to distinguish values of
the source type if 16p-1>bn where b is FLT_RADIX and n is
the number of base-b digits in the significand of the
source type. A smaller p might suffice depending on the
implementation's scheme for determining the digit to the
left of the decimal-point character.
This is symmetric with C99's hexadecimal floating point literals:
hexadecimal-floating-constant: hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffix-opt hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffix-opt
hexadecimal-fractional-constant: hexadecimal-digit-sequence-opt . hexadecimal-digit-sequence hexadecimal-digit-sequence .
binary-exponent-part: p sign-opt digit-sequence P sign-opt digit-sequence
hexadecimal-digit-sequence: hexadecimal-digit hexadecimal-digit-sequence hexadecimal-digit
scanf and strtod support the same format.
Regards, Martin
- Previous message: [Python-Dev] [Python-checkins] r64424 - in python/trunk:Include/object.h Lib/test/test_sys.py Misc/NEWSObjects/intobject.c Objects/longobject.c Objects/typeobject.cPython/bltinmodule.c
- Next message: [Python-Dev] [Python-checkins] r64424 - in python/trunk:Include/object.h Lib/test/test_sys.py Misc/NEWSObjects/intobject.c Objects/longobject.c Objects/typeobject.cPython/bltinmodule.c
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]