On Tue, 10 Jul 2007 18:05:49 +1000, Ben Finney wrote: > I have never gone wrong with mathematical expressions since I reduced > the set of operator associativity and precedence rules to these: > > 1. Addition and subtraction have the same precedence, and are > left-to-right associative > > 2. Multiplication and division have the same precedence, and are > left-to-right associative > > 3. Use parentheses to make explicit all other precedence and > associativity > > The specific programming language I use at any given moment might follow > more complex rules, but I ignore them in favour of the above set. I thus > spend less time uselessly thinking about tasks I should be delegating to > explicit expression syntax, and am never surprised by a misunderstood > mathematical associativity or precedence rule.
However... floating point issues can still bite you. _Neither_ floating point addition nor multiplication are associative, or rather, they are not *always* associative. And it doesn't take weird examples, complicated formulae, or wildly differing numbers to find examples: >>> 0.1*(0.2*0.3) == (0.1*0.2)*0.3 False >>> 0.1+(0.2+0.3) == (0.1+0.2)+0.3 False (Depending on the version of Python, operating system, chip set, underlying C libraries and solar tides, your millage may vary.) The difference between the left and right hand sides are small, but real. Or rather, float. *wink* -- Steven. -- http://mail.python.org/mailman/listinfo/python-list