[Python-ideas] Python Numbers as Human Concept Decimal System
Steven D'Aprano
steve at pearwood.info
Sat Mar 8 08:08:40 CET 2014
On Fri, Mar 07, 2014 at 06:02:02PM -0800, Guido van Rossum wrote:
> On Fri, Mar 7, 2014 at 5:05 PM, Steven D'Aprano <steve at pearwood.info> wrote:
>
> > [...] The way Python converts between the two is the right
> > way to do the conversion.
>
>
> It's *exact*. I don't know we all agree it is the *right* way.
Fair point. I can't argue with that :-)
> > Given a decimal d and a float f constructed
> > from d, f is the closest possible float to d. And the same applies for
> > conversions the other way around.
> >
>
> It's actually stronger the other way around: when d is constricted from f,
> d is *equal* to the mathematical value of f.
Ah, so it is.
> The issue (as I see it) is that there are many different decimals d that
> all convert to the same float f (because of rounding). The d that is
> constructed by taking the exact value of f is gross overkill.
Decimal -> float is many-to-one: more than one Decimal will round to a
single float. But float -> Decimal is always one-to-one, I think,
regardless of whether you use the current exact conversion or repr
first. The crux of the matter is whether or not it is overkill for
Decimal to use the exact value.
Correct me if I'm wrong, but I think we agree that there ought to be a
way to convert floats exactly to Decimal, we just disagree on whether
that ought to be spelled Decimal(x) or Decimal.from_float(x).
Likewise I think we agree that there ought to be some way to convert
floats to the nearest "simple" Decimal, with the question being whether
that ought to be spelled Decimal(repr(x)) or Decimal(x).
If we're all in agreement that this is the only serious area of
disagreement for a change which has any hope of appearing in 3.5, then
we can put aside the more speculative proposals
--
Steven
More information about the Python-ideas
mailing list