On Thu, Oct 12, 2006 at 03:24:14PM +0200, Florian Klaempfl wrote: > Andrea Mauri wrote: > > Jonas Maebe wrote: > >> > >> Not only that, but -0.000 is different from 0.000 (at least for the fpu) > >> > >> > >> Jonas > > In a mathematical way of view I think that -0.000 has no meaning.
It does it means that the original number was negative before rounding. 0 is neither positive or negative but -0.000 is both correct and meaningful. The precision (4 digits) indicates that it is not exactly 0 but is slightly negative ie: x = -0.000 ==> x < 0.000 and x > -0.0005 ( rounding towards zero ) where x = 0.000 ==> x > 0.000 and x < 0.0005 ( rounding towards zero ) It is the implied precision that is causing you the problems. Besides the other problem is that converting decimal -1E-4 to binary results in an irrational binary number ( similar to 1/3 in decimal). As long as you use floating point numbers in normal computing tasks you need to be aware of the implied precision problems and do error checking in your code. John > > Well, despite the fact that -0.000 is probably indeed wrong in this case, a > mathematical view is often wrong when using an fpu :) > > > If I round something and the resulting value is zero, well zero is zero. > > Not +0 or -0. > > a. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel