# Approminately equals returns true when values are close enough, within some # distance epsilon above or below the given value. # Adds the approximately equals operation to Numeric and its progeny. class Numeric # The initial default distance from a Numeric below which it is considered # to be approximately equal to a another Numeric. @@epsilon = 0.0000000001 # The default distance from a Numeric below which it is considered to be # approximately equal to a another Numeric. def Numeric.epsilon @@epsilon end # Sets the default distance for approximately equals comparisons. def Numeric.epsilon=(epsilon) @@epsilon = epsilon.abs end # returns true if the difference between the instance and the given Numeric # is less than the given distance. def approximately_equals?(value,epsilon=@@epsilon) (self - value).abs < epsilon end alias =~ approximately_equals? end