Delphi - Számok összehasonlítása, előjelek, szorzás

forráskód letöltése
Ebben a példában olyan függvényekkel foglalkozunk, amelyek segítségével egész és valós típusú számokról, valamint azok viszonyáról különféle információkat kérdezhetünk le. Megnézzük, hogy miként lehet az értékellenőrzéseket állítható tartományok segítségével meghatározni. Ezek a függvények több lehetőséget kínálnak, mint a hagyományos =, <=, >=, <, >, <> operátorok.
A Math unit-ban találhatunk olyan függvényeket, amelyek segítségével ellenőrzéseket hajthatunk végre egész és valós számokon. Vizsgálhatjuk egyszerűen egy szám előjelét, vagy akár két szám viszonyát.
A Sign függvény segítségével meghatározhatjuk, hogy a megadott szám milyen előjellel rendelkezik, illetve értéke 0-e. A függvénynek három típusa létezik, ezek a következők:
type TValueSign = -1..1;
function Sign(const AValue: Double): TValueSign;
function Sign(const AValue: Integer): TValueSign;
function Sign(const AValue: Int64): TValueSign;
Az AValue paraméterben kell megadnunk a vizsgálandó számot. A függvény 3 értékkel térhet vissza:
Érték Jelentése
-1 A szám negatív.
0 A szám 0.
1 A szám pozitív.
Ha csak arra vagyunk kíváncsiak, hogy egy szám értéke 0-e, akkor használhatjuk az IsZero függvényt. Ez a függvény annyiban tud többet az egyenlőségjel operátornál, hogy megadhatunk egy környezet értéket is. A függvény azoknak a számoknak az értékét tekinti nullának, amelyek a 0 megadott környezetén belül vannak. A függvénynek 3 fajtája létezik.
function IsZero(const A: Extended; Epsilon: Extended = 0): Boolean;
function IsZero(const A: Double; Epsilon: Double = 0): Boolean;
function IsZero(const A: Single; Epsilon: Single = 0): Boolean;
Az A paraméterben kell megadnunk az ellenőrizendő számot, az Epsilon-ban pedig a környezet értékét. A függvény visszatérési értéke akkor igaz, ha a megadott szám benne van a 0 Epsilon környezetében.
Két valós típusú szám egyenlőségét könnyedén eldönthetjük a SameValue függvény használatával. Ellentétben a sima egyenlőségjel operátorral, itt lehetőségünk van környezet megadására is. A függvénynek 3 fajtája létezik.
function SameValue(const A, B: Single; Epsilon: Single = 0): Boolean;
function SameValue(const A, B: Double; Epsilon: Double = 0): Boolean;
function SameValue(const A, B: Extended; Epsilon: Extended = 0): Boolean;
Az A és B paraméterekben adhatjuk meg a két összehasonlítandó számot, az Epsilon paraméterben pedig a környezet értéket. A környezet értéke határozza meg, hogy milyen tartományban tekintjük a számokat egyenlőknek.
A függvény visszatérési értéke csak akkor igaz, ha a két valós szám egyenlőnek tekinthető.
Ha az egyenlőségnél több információra van szükségünk, két változó értékének viszonyát a CompareValue függvény segítségével is eldönthetjük. Ennek a függvénynek 5 fajtája létezik.
function CompareValue(const A, B: Extended; Epsilon: Extended = 0): TValueRelationship;
function CompareValue(const A, B: Double; Epsilon: Double = 0): TValueRelationship;
function CompareValue(const A, B: Single; Epsilon: Single = 0): TValueRelationship;
function CompareValue(const A, B: Integer): TValueRelationship;
function CompareValue(const A, B: Int64): TValueRelationship;
Az A és B paraméterekben kell megadnunk a két összehasonlítandó számot. Azokban a függvényekben, amelyekben található Epsilon paraméter, megadhatunk egy környezetet.
A függvények eredményei TValueRelationship típusúak. A TValueRelationship típus a következő értékeket tartalmazhatja:
Érték Jelentése
-1 A kisebb B-nél.
0 A két szám egyenlő.
1 A nagyobb B-nél.
Ha egy adott feltétel teljesüléstől függően, két külön számmal akarunk dolgozni, használhatjuk az IfThen függvényt.
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = 0): Integer;
function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64 = 0): Int64;
function IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double = 0.0): Double;
Az AValue paraméterben egy logikai értéket adhatunk meg. Ha az AValue értéke igaz, akkor a függvény az ATrue paraméterben megadott számot adja visszatérési értékként, egyébként az AFalse-ban megadott számot.
Ha meg akarjuk tudni, hogy egy szám benne van-e egy tartományban, akkor használhatjuk az InRange függvényt.
function InRange(const AValue, AMin, AMax: Integer): Boolean;
function InRange(const AValue, AMin, AMax: Int64): Boolean;
function InRange(const AValue, AMin, AMax: Double): Boolean;
Az AValue paraméterben kell megadnunk a vizsgálandó számot. Az AMin és AMax paraméterek a tartomány legkisebb és legnagyobb számát jelentik. A függvény visszatérési értéke akkor igaz, ha AMin <= AValue <=AMax.