# Approminately equals returns true when values are close enough, within some # distance epsilon above or below the given value. Three methods and a class # variable are added to the Numeric class. # # @@epsilon, and two class methods, Numeric.epsilon and Numeric.epsilon= get # and set the maximum difference between two values for them to be # approximately equal. # # approximately_equals? and the aliased operator =~ return true if two values # are approximately equal. # Behavor added to Numeric by eymiha_math. 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