[Python-Dev] Return type of round, floor, and ceil in 2.6
Tim Peters
tim.peters at gmail.com
Sun Jan 6 01:32:53 CET 2008
[Mark Dickinson]
> quantize is about as close as it gets. Note that it's a Decimal method as
> well as a Context method, so you can invoke it directly on a given decimal:
>
>
> >>> Decimal("2.34567").quantize(Decimal("0.01"))
> Decimal("2.35")
This "reads better" in many cases if you define a constant first, like:
PENNIES = Decimal("0.01")
... [lots of code] ...
rounded = some_decimal.quantize(PENNIES)
> I've also occasionally felt a need for a simple rounding function that isn't
> affected by context. Would others be interested in such a function being
> added to Decimal? I guess there are two possibly useful operations: (1)
> round to a particular decimal place ( e.g. nearest ten, nearest hundredth,
> ..) and (2) to round to a particular number of significant digits; in both
> cases, the user should be able to specify the desired rounding mode. And
> for each operation, it might also be useful to specify whether the result
> should be padded with zeros to the desired length or not. ( i.e. when
> rounding 3.399 to 3 significant places, should it produce 3.4 or 3.40?)
>
> Any thoughts?
+1 from me. Like the 754 standard, the decimal std is trying to
mandate a more-or-less minimal set of core functionality, with no
concern for user interface. "Convenience functions" can be valuable
additions in such cases, & I agree it's far from obvious to most how
to accomplish rounding using the decimal facilities.
I think it's obvious ;-) that rounding 3.399 to 3 sig. dig. should produce 3.40.
More information about the Python-Dev
mailing list