On 08/22/2015 09:42 AM, R0b0t1 wrote:
> https://en.wikipedia.org/wiki/Round-off_error
> https://en.wikipedia.org/wiki/Machine_epsilon
> 
> Either add a tolerance (a - b <= t) or compare them as strings as
> you've been doing.
> 

You probably want |a - b| <= t there =)

But... that can cause problems too. If your numbers are small enough,
you can wind up with infinity or NaN (not a number) and then your
comparisons will go berserk.

Floating point addition isn't even commutative:

  > 0.1 + 0.2 + 0.3
  0.6000000000000001
  > 0.1 + (0.2 + 0.3)
  0.6

Better to avoid that quagmire entirely if you can. Use fixed point
arithmetic, arbitrary precision, or even rational numbers if you can get
away with it.



Reply via email to