On Oct 1, 8:17?pm, [EMAIL PROTECTED] wrote: > On Oct 1, 9:03 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > > > On Oct 1, 7:20 pm, [EMAIL PROTECTED] wrote: > > > > On Oct 1, 8:30 am, Nick Craig-Wood <[EMAIL PROTECTED]> wrote: > > > > > >>> mpq(1,3)+0.6 > > > > mpq(14,15) > > > > Golly! That's quite impressive. And more than a little bit magic as > > > well, since 0.6 is definitely not the same as 3/5. > > > It's not? Since when? > > The 0.6 above is a floating point number, mathematically very close to > 0.6 but definitely not equal to it, since 0.6 can't be represented > exactly as a float.
Oh, you mean something like this, right? >>> import gmpy >>> a = 0.6 >>> a 0.59999999999999998 So, the rational should have 59999999999999998 in the neumerator and 100000000000000000 in the denominator? But it doesn't >>> b = gmpy.mpq(a) >>> b mpq(3,5) Why do you suppose that is? For that matter, why does >>> str(a) '0.6' give me an EXACT representation? Didn't you just say it couldn't be represented exactly? Which is correct, >>> str(a) '0.6' or >>> repr(a) '0.59999999999999998' ? How does gmpy make the conversion from float to rational? -- http://mail.python.org/mailman/listinfo/python-list