Also DAGS for 'Goldberg-What every computer scientist should know about floating point' -- I seem to have mislaid my convenient link at the moment, sorry.
It's inherent in floating point as the above show in lesser/greater detail.
if (abs(AAA)-setValue) > tolVal
is alternative way to make a comparison where tolVal is something like 1E-7*setValue or other suitable tolerance value.
The point is that _exact_ comparisons to floating point values is often going to cause grief owing to a bit or so in the representation that can be off owing to whether the value is computed or entered at the command line or otherwise obtained in slightly different manner. Even order of computation can cause a rounding difference as can whether an intermediate value is held at a higher precision in a floating point register during computations rather than stored between operations.