Project

General

Profile

Feature #10425

A predicate method to tell if a number is near another

Added by sawa (Tsuyoshi Sawada) about 6 years ago. Updated about 6 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:65898]

Description

A method near? like the following would be useful.

class Numeric
    def near? other, delta: Float::EPSILON
        (other.to_f - to_f).abs <= delta.to_f
    end
end

class Time
    def near? other, delta: Float::EPSILON
        to_f.near?(other.to_f, delta: delta)
    end
end

It can be used to check errors, or whether something is around something.

23.24324.near?(23.23, delta: 0.5) # => true
t1 = t2 = Time.now
t3 = Time.now
t1.near?(t2) #=> true
t1.near?(t3) #=> false
5.near?(3, delta: 1) #=> true

Some testing frameworks have something similar to this, but I think this is an elementary concept that Ruby should support at it core.


Related issues

Related to Ruby master - Feature #15811: Propsing new method for comparing equality of 2 (float) numbers relativelyOpenActions

Also available in: Atom PDF