Florian Klaempfl wrote 8 lines
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
Show quoted text 7 lines
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.