manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Comparing FP Values,  Next: Errors accumulate,  Prev: Inexact representation,  Up: Inexactness of computations

16.4.1.2 Be Careful Comparing Values
....................................

Because the underlying representation can be a little bit off from the
exact value, comparing floating-point values to see if they are exactly
equal is generally a bad idea.  Here is an example where it does not
work like you would expect:

     $ gawk 'BEGIN { print (0.1 + 12.2 == 12.3) }'
     -| 0

   The general wisdom when comparing floating-point values is to see if
they are within some small range of each other (called a "delta", or
"tolerance").  You have to decide how small a delta is important to you.
Code to do this looks something like the following:

     delta = 0.00001                 # for example
     difference = abs(a - b)         # subtract the two values
     if (difference < delta)
         # all ok
     else
         # not ok

(We assume that you have a simple absolute value function named 'abs()'
defined elsewhere in your program.)  If you write a function to compare
values with a delta, you should be sure to use 'difference < abs(delta)'
in case someone passes in a negative delta value.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.