On Feb 25, 1:31 pm, "John Machin" <[EMAIL PROTECTED]> wrote: > On Feb 25, 11:06 pm, "Arnaud Delobelle" <[EMAIL PROTECTED]> > wrote: [...] > Evidently not; here's some documentation we both need(ed) to read: > > http://docs.python.org/tut/node16.html
Thanks for this link > I'm very curious to know what the exceptions were in November 2000 and > if they still exist. There is also the question of how much it matters > to you. Presuming the representation is 64 bits, even taking 3 bits > off the mantissa and donating them to the exponent leaves you with > 15.05 decimal digits -- perhaps you could assume that you've got at > least 15 decimal digits. It matters to me because I prefer to avoid making assumptions in my code! Moreover the reason I got interested in this is because I am creating a Dec class (decimal numbers) and I would like that: * given a float x, float(Dec(x)) == x for as many values of x as possible * given a decimal d, Dec(float(d)) == d for as many values of d as possible. (and I don't want the standard Decimal class :) > While we're waiting for the gurus to answer, here's a routine that's > slightly less dodgy than yours: > > | >>> for n in range(200): > | ... if (1.0 + 1.0/2**n) == 1.0: > | ... print n, "bits" > | ... break > | ... > | 53 bits Yes I have a similar routine: |def fptest(): | "Gradually fill the mantissa of a float with 1s until running out of bits" | ix = 0 | fx = 0.0 | for i in range(200): | fx = 2*fx+1 | ix = 2*ix+1 | if ix != fx: | return i ... >>> fptest() 53 I guess it would be OK to use this. It's just that this 'poking into floats' seems a bit strange to me ;) Thanks for your help -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list