From: Markus Date: 2004-10-16T13:35:00+09:00 Subject: Re: Rounding to X digits On Fri, 2004-10-15 at 17:58, trans. (T. Onoma) wrote: > On Friday 15 October 2004 07:23 pm, markus@reality.com wrote: > | > puts 0.5.round #=> 1 > | > puts sprintf("%.0f", 0.5) #=> 0 > | > | Both are (IIRC) ISO 31-0 conformant, but one uses ISO 31-0 B.3 rule A > | and the other uses ISO 31-0 B.3 rule B. > | > | That said, one of the rules (the one sprintf uses, to round down > | following even digits is an abomination and should be eliminated from the > | face of the earth. nnn.nn5 should ALWAYS round up and rounded values > | should not be re-rounded (which is what the contrary rule assumes is > | happening). > > Apparently the idea of even vs. odd rounding was to help prevent "inflational" > rounding --successive rounding pushing values upward. I think K&R actually > supported the idea. I'm not sure how I feel about it. Yes, that's exactly why it's there. But there are several reasons (e.g. Benford's Law http://mathworld.wolfram.com/BenfordsLaw.html) why it doesn't even work for its intended purpose. The real answer is to not re-round the data. As for developing strong feelings about it, all you need to do is work downstream from someone who swears by it and try to do some valid numerical analysis. The only person I ever knew with a worse lament was a friend who worked downstream of an astronomy professor (who should have been emeritusized years before) that routinely converted his images to jpeg "to save disk space." -- Markus