79 |
Fie exemplu următor
$result = "123" < "45";
$result = "123" lt "45";
În prima situaţie şirurile sunt convertite în întregi şi expresia va returna o valoare falsă, în timp ce în situaţia a doua expresia va fi adevărată deoarece şirul “45” apare în ordine alfabetică după şirul “123”.
Numerele reale şi comparaţia
Programul următor (tst6.pl)
#!/usr/local/bin/perl
$value1 = 14.3;
$value2 = 100 + 14.3 - 100;
if ($value1 == $value2) {
print("value 1 equals value 2\n");
} else {
print("value 1 does not equal value 2\n");
}
returnează la consolă
value 1 =14.3 does not equal value 2=14.3
Acest rezultat poate părea paradoxal la prima vedere, el însă evidentiază o trăsătură specifică oricăror prelucrări numerice, indiferent de limbaj. Să modificăm puţin programul adăugând înainte de comparaţie linia
print("14.3 - value 1 is ",14.3-$value1," while 14.3 - value2 is ",14.3-$value2,"\n");
care returnează la consolă
14.3 - value 1 is 0 while 14.3 - value2 is 3.5527136788005e-15
value 1 =14.3 does not equal value 2=14.3
Calculul numeric efectuat cu Perl (ca de altfel cu orice alt limbaj), este efectuat cu erori. În cazul de faţă, $value2 fiind mai mic decât 14.3 cu 3.5527136788005e-15.
© Cornel Mironel Niculae, 2003-2004
13-Nov-2009