[Python-Dev] Mixing float and Decimal -- thread reboot (original) (raw)

Stefan Krah stefan at bytereef.org
Mon Mar 22 20:46:28 CET 2010


Raymond Hettinger <raymond.hettinger at gmail.com> wrote:

On Mar 22, 2010, at 11:26 AM, Mark Dickinson wrote: > > Just for the record, I'd also prefer Decimal + Fraction -> Decimal.

Guido was persuasive on why float + Fraction --> float, so this makes sense for the same reasons. For the implementation, is there a way to avoid the double rounding in myfloat + myfrac.numerator / myfrac.denominator? Perhaps translate it to: f = Fractions.fromdecimal(myfloat) + myfract # Lossless, exact addition return f.numerator / f.denominator # Only one decimal context rounding applied. Elsewhere in the decimal module, there is a fundamental notion that numbers are exact and only the results of operations are rounded. For example, it is possible in decimal to add together two high precision numbers but do so in a low precision context.

I don't think this will be practical for huge decimal exponents.

Also, at first glance I wonder how to integrate this cleanly into the control flow. convert_other() will not work, so there would need to be a special case for fractions in each function.

Or do you mean to outsource the whole computation to the fractions module, which calls decimal only for the final division?

Stefan Krah



More information about the Python-Dev mailing list