Instance Property


The unit in the last place of self.


var ulp: CGFloat { get }


This is the unit of the least significant digit in the significand of self. For most numbers x, this is the difference between x and the next greater (in magnitude) representable number. There are some edge cases to be aware of:

  • greatestFiniteMagnitude.ulp is a finite number, even though the next greater representable value is infinity.

  • x.ulp is NaN if x is not a finite number.

  • If x is very small in magnitude, then x.ulp may be a subnormal number. On targets that do not support subnormals, x.ulp may be flushed to zero.

This quantity, or a related quantity is sometimes called “epsilon” or “machine epsilon”. We avoid that name because it has different meanings in different languages, which can lead to confusion, and because it suggests that it is a good tolerance to use for comparisons, which is almost never is.

(See for more detail)


From Protocol