Mike Meyer wrote:
 I'm willing to do the work to get
decimals working properly with it.

Facundo's post reminded me of some of the discussion about the interaction between floats and Decimal that went on when he was developing the module that eventually made it into the standard library.


Perhaps Rational should have the same "arm's length" interaction with floats that Decimal does - require the user to set the precision they want by turning the float into a string that is then fed to the Rational constructor. My argument is that the following behaviour might be a little disconcerting:

Py> x = 1.1
Py> Rational(x)
Rational("11000000000000001 / 10000000000000000")

as opposed to:
Py> x = 1.1
Py> Rational("%.2f" % x)
Rational("11 / 10")

(A direct Decimal->Rational conversion should be OK, however, since it should match standard expections regarding the behaviour of the fractional portion)

The other point is that, since converting a Rational to float() or Decimal() may lose information, this is something that Python shouldn't really do automatically. As Facundo suggested, a string representation is a suitable intermediate format that makes explicit the degree of precision used in the conversion.

Cheers,
Nick.

--
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---------------------------------------------------------------
            http://boredomandlaziness.skystorm.net
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to