Programowanie w języku Delphi

CompareValue

  • 2015-06-29 16:34
  • 0 komentarzy
  • 872 odsłony
  • Oceń ten tekst jako pierwszy
CompareValue
Moduł: Math

function CompareValue(const A, B: Integer): TValueRelationship; overload;
function CompareValue(const A, B: Int64): TValueRelationship; overload;
function CompareValue(const A, B: Single; Epsilon: Single = 0): TValueRelationship; overload;
function CompareValue(const A, B: Double; Epsilon: Double = 0): TValueRelationship; overload;
function CompareValue(const A, B: Extended; Epsilon: Extended = 0): TValueRelationship; overload;

CompareValue pozwala porównywać liczby zmiennoprzecinkowe wg zadanej tolerancji. Jeżeli dwie liczby są wystarczająco blisko siebie, są one uważane za równe. Wartość Epsilon jest wartością dozwoloną tolerancji.

TValueRelationship przyjmuje wartości:

  • LessThanValue - wartość -1
  • EqualsValue - wartość 0
  • GreaterThanValue - wartość 1

Przykład wywołania:

var
  A : Single;
  B : Single;
  C : Single;
begin
  A := 23.0;
  B := 23.0;
  C := 23.1;
 
  // Porównanie dwóch identycznych wartości
  case CompareValue(A, B) of
    LessThanValue    : ShowMessage('A < B');
    EqualsValue      : ShowMessage('A = B');
    GreaterThanValue : ShowMessage('A > B');
  end;
 
  // Porónanie dwóch różnych wartości
  case CompareValue(A, C) of
    LessThanValue    : ShowMessage('A < C');
    EqualsValue      : ShowMessage('A = C');
    GreaterThanValue : ShowMessage('A > C');
  end;
 
  // Porównanie dwóch różnych wartości z tolerancją+/- 0,2
  case CompareValue(A, C, 0.2) of
    LessThanValue    : ShowMessage('A < C');
    EqualsValue      : ShowMessage('A = C');
    GreaterThanValue : ShowMessage('A > C');
  end;
end;

Wyniki dla powyższych przykładów:

A = B
A < C
A = C