[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. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com