# System.Math.CompareValue

Object Pascal

```function CompareValue(const A, B: Extended; Epsilon: Extended): TValueRelationship;
function CompareValue(const A, B: Double; Epsilon: Double): TValueRelationship;
function CompareValue(const A, B: Single; Epsilon: Single): TValueRelationship;
function CompareValue(const A, B: Integer): TValueRelationship;
function CompareValue(const A, B: Int64): TValueRelationship;
function CompareValue(const A, B: UInt64): TValueRelationship;
```

C++

```extern DELPHI_PACKAGE System::Types::TValueRelationship __fastcall CompareValue(const System::Extended A, const System::Extended B, System::Extended Epsilon = 0.000000E+00)/* overload */;
```

#### Properties

Type Visibility Source Unit Parent
function public
System.Math.pas
System.Math.hpp
System.Math System.Math

## Description

Returns the relationship between two numeric values.

Call CompareValue to determine the relationship between two numeric values. When comparing floating-point values, CompareValue lets you specify a maximum difference to use when comparing values, so that they are considered the same if they are within that amount.

<A> and <B> are the values to compare.

<Epsilon> is the maximum amount by which <A> and <B> can differ and still be considered the same value.

CompareValue returns one of the following constants defined for the TValueRelationship type:

• `LessThanValue` if <A> is less than <B> (by more than <Epsilon> if <A> and <B> are floating-point numbers).
• `EqualsValue` if <A> is equivalent to <B> (the same, or within <Epsilon> if <A> and <B> are floating-point numbers).
• `GreaterThanValue` if <A> is larger than <B> (by more than <Epsilon> if <A> and <B> are floating-point numbers).

If `<Epsilon> = 0`, then some reasonable default value is used implicitly. For example, the Double version of SameValue uses the default value:

`Epsilon = Max(Min(Abs(A), Abs(B)) * 1E-12, 1E-12)`