This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author tim.peters
Recipients christian.heimes, gvanrossum, nascheme, noam, rhettinger, skip.montanaro, tim.peters
Date 2007-12-19.03:09:08
SpamBayes Score 0.035055004
Marked as misclassified No
Message-id <1198033749.63.0.307895624885.issue1580@psf.upfronthosting.co.za>
In-reply-to
Content
Guido, right, for that to work reliably, double->str and str->double
must both round correctly on the platform doing the repr(), and
str->double must round correctly on the platform reading the string.

It's quite easy to understand why at a high level:  a simple (but
tedious) pigeonhole argument shows that there are more representable
doubles than there are possible 16-digit decimal outputs.  Therefore
there must exist distinct doubles (say, x and y) that map to the same
16-digit decimal output (in fact, there are cases where 7 consecutive
doubles all map to the same correctly-rounded 16-digit decimal string).
 When reading that back in, there's no room for error in deciding which
of {x, y} was /intended/ -- the str->double conversion has to be
flawless in deciding which of {x, y} is closest to the 16-digit decimal
input, and in case x and y are equally close, has to apply 754's
round-to-nearest/even rule correctly.  This can require exact
multi-thousand bit arithmetic in some cases, which is why the 754
standard doesn't require it (thought to be impractically expensive at
the time).

> which would really turn the educational issue into an educational
> nightmare, trying to explain why two numbers both print the same
> but compare unequal

Well, newbies see that in, e.g., spreadsheets every day.  You generally
have to work to get a spreadsheet to show you "all the digits"; in some
spreadsheets it's not even possible.  "Not all digits are displayed"
should be within the grasp of must students without suffering nightmares ;-)
History
Date User Action Args
2007-12-19 03:09:09tim.peterssetspambayes_score: 0.035055 -> 0.035055004
recipients: + tim.peters, gvanrossum, skip.montanaro, nascheme, rhettinger, christian.heimes, noam
2007-12-19 03:09:09tim.peterssetspambayes_score: 0.035055 -> 0.035055
messageid: <1198033749.63.0.307895624885.issue1580@psf.upfronthosting.co.za>
2007-12-19 03:09:09tim.peterslinkissue1580 messages
2007-12-19 03:09:08tim.peterscreate