Re: PEP proposal for round(x,n) enhancement

To Chris and others interested, Would you mind giving me an opinion here? I think you made the best argument for not using the name "round" since floating n is already accepted by round and changing how n is interpreted would break anyone's code who passed in n with a non-zero decimal portion. Sigfig or chop is an alternative but I really don't like the name "chop" since it's not descriptive of the rounding that takes place. Sigfig is ok, but I am proposing a round function (below) that offers more than just sigfigs. So...how about "round2" which has precedence in the atan2() function. The two sorts of roundings that can be done with round2() are 1) rounding to a specified number of significant figures or 2) rounding to the nearest "x". The latter is useful if you are making a histogram, for example, where experimental data values may all be distinct but when the deviation of values is considered it makes sense to round the observations to a specified uncertainty, e.g. if two values differ by less than sigma then they could be considered to be part of the same "bin". The script is below. Thanks for any input, /c #### from math import floor,log10 def round2(x,n=0,sigs4n=1): '''Return x rounded to the specified number of significant digits, n, as counted from the first non-zero digit. If n=0 (the default value for round2) then the magnitude of the number will be returned (e.g. round2(12) returns 10.0). If n<0 then x will be rounded to the nearest multiple of n which, by default, will be rounded to 1 digit (e.g. round2(1.23,-.28) will round 1.23 to the nearest multiple of 0.3. Regardless of n, if x=0, 0 will be returned.''' if x==0: return x if n<0: n=round2(-n,sigs4n) return n*int(x/n+.5) if n==0: return 10.**(int(floor(log10(abs(x))))) return round(x,int(n)-1-int(floor(log10(abs(x))))) ####
participants (1)
-
Christopher Smith