> Is there any reason why ROUND doesn't return a double? Because the IEEE storage format most (all?) computers use to store floating point numbers is binary based, many values that can be stored exactly in a base 10 system are rounded slightly to fit into the binary system. This is similar to the way the value 1/3 cannot be stored exactly in a base 10 system.
You can see an example of this rounding using sqlite: sqlite> select (0.5 - 0.4) - 0.1; -2.77555756156289e-17 This is, incidentally, why you should be very careful comparing floating point numbers in C using "==": sqlite> select (0.5 - 0.4) == 0.1; 0 Google for "IEEE floating point format" if you require a coherent explanation :) __________________________________ Discover Yahoo! Use Yahoo! to plan a weekend, have fun online and more. Check it out! http://discover.yahoo.com/