"Richard Wagner" <[email protected]> wrote
I'm fairly new to Python and am trying to find a simple way to round
floats to a specific number of significant digits. I found an old post
on this list with exactly the same problem:
The usual question is why would you want to lose precision in your data?
Significant digits is usually only an issue for presentation not internal
storage.
That's why there is no built in way of losing precision (rounding) in the
data.
That having been said the two approaches, string or math, are equally
valid. I suspect the math version will be much slower since it calls
several functions but I haven't timed it.
def round_to_n(x, n):
fmt = "%%.%de" % (n)
return float( fmt % x)
import math
def round_figures(x, n):
return round(x, int(n - math.ceil(math.log10(abs(x)))))
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor