#! /usr/bin/env python3 # encoding: utf-8 class compare_float: """ Sets .lt, .eq or .gt iff A is less than, equal or greather than B. """ def __init__(self, A, B, epsilon=1e-12): self.lt = False self.le = True self.eq = False self.ge = True self.gt = False if A < (B - epsilon): self.lt = True self.ge = False elif A > (B + epsilon): self.gt = True self.le = False if abs(A - B) < epsilon: self.eq = True # convenience self.less = self.lt self.less_or_equal = self.le self.equal = self.eq self.greater_or_equal = self.ge self.greater = self.gt if __name__ == '__main__': x = compare_float(1, 2, 0.5) assert x.lt and x.less and not (x.le or x.ge) x = compare_float(2, 2, 0.5) assert x.eq and x.le and x.ge and not (x.lt or x.gt) x = compare_float(3, 2, 0.5) assert x.gt and not (x.ge or x.eq or x.lt)