[Python-Dev] Expert floats

Tim Peters tim.one at comcast.net
Wed Mar 31 22:36:00 EST 2004


[Andrew Koenig]
>> On the other hand, it is pragmatically more convenient when an
>> implementation prints the values of floating-point literals with a
>> small number of significant digits with the same number of
>> significant digits with which they were entered.

[Greg Ewing]
> But "significant digits" is a concept that exists only
> in the mind of the user. How is the implementation to
> know how many of the digits are significant, or how
> many digits it was originally entered with?
>
> And what about numbers that result from a calculation,
> and weren't "entered" at all?

The Decimal module has answers to such questions, following the proposed IBM
decimal standard, which in turn follows long-time REXX practice.  The
representation is not normalized, and because of that is able to keep track
of "significant" trailing zeroes.  So, e.g., decimal 2.7 - 1.7 yields
decimal 1.0 (neither decimal 1. nor decimal 1.00), while decimal 2.75 - 1.65
yields decimal 1.10, and 1.0 and 1.10 have different internal
representations than decimal 1 and 1.1, or 1.00 and 1.100.  "The rules" are
spelled out in detail in the spec:

    http://www2.hursley.ibm.com/decimal/




More information about the Python-Dev mailing list