Moduł Scalar::Numbers

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Obsługa modułu Scalar::Numbers

use Scalar::Number qw(scalar_num_part); $num = scalar_num_part($scalar); use Scalar::Number qw(sclnum_is_natint sclnum_is_float); if(sclnum_is_natint($value)) { ...} if(sclnum_is_float($value)) { ...} use Scalar::Number qw(sclnum_val_cmp sclnum_id_cmp); @sorted_nums = sort { sclnum_val_cmp($a, $b) } @floats; @sorted_nums = sort { sclnum_id_cmp($a, $b) } @floats;

Co to jest?

Wszelakie numeryczne aspekty skalarów.

Szczegóły

Ten moduł zajmuje się numeryczną częscią zwykłych (string) skalarów Perla. Skalar może zawierać wartość numeryczna, którą można przedstawić jako liczbę całkowitą lub rzeczywistą. Duża część z nich da się przedstawić na oba sposoby. By w pełnie zrozumieć arytmetykę w Perlu koniecznym jest poznać obie te reprezentacje i odróżniać zachowania zależne od tych reprezentacji.

Moduł dostarcza funkcje, które potrafią pobrać wartość numeryczną ze skalara, sklasyfikować go i porównać z innymi.

Funkcje

Dekompozycja

scalar_num_part(SCALAR)

Pobiera wartość numeryczną ze SCALAR i zwraca ją jako czysto numerycznego skalar.

Każdy skalar ma wartość tekstową i numeryczną. W skalarach tekstowych wartość numeryczna jest ustalana na podstawie tego tekstu.

Klasyfikacja

sclnum_is_natint(VALUE)

Określa czy argument może być reprezentowany przez typ całkowity. Zero ze znakiem się nie kwalifiukje jeżeli typ zmiennoprzecinkowy zawiera zero ze znakiem.

Tylko numeryczna wartość skalara jest brana pod uwagę. Wartość tekstowa jest ignorowana.

sclnum_is_float(VALUE)

Określa czy argument może być reprezentowany przez typ zmiennoprzecinkowy. Jeżeli typ zmiennoprzecinkowy zawiera zero ze znakiem to zero bez znaku się nie kwalifikuje.

Tylko numeryczna wartość skalara jest brana pod uwagę. Wartość tekstowa jest ignorowana.

Porównuje numerycznie warość A i B. Liczby całkowite i rzeczywiste są poprawnie porównywane ze sobą. Zwraca -1, 0, 1 lub undef odpowiednio wtedy gdy A jest mniejsze, równe, większe lub nie porównywalne z B. Sytuacja gdy liczby są nie porównywalne zachodzi gdy obie są równe NaN. Wszystkie typy zera są traktowane jako równe.

Funkcja działa bardzo podobnie do wbudowanego operatora Perla <=>.Jedyną różnicą jest możliwośc porównywania liczby całkowitej z rzeczywistą gdy żadna nie może być przedstawiona w formacie tej drugiej

Porównanie

sclnum_val_cmp(A, B)

Porównuje numerycznie warość A i B. Liczby całkowite i rzeczywiste są poprawnie porównywane ze sobą. Zwraca -1, 0, 1 lub undef odpowiednio wtedy gdy A jest mniejsze, równe, większe lub nie porównywalne z B. Sytuacja gdy liczby są nie porównywalne zachodzi gdy obie są równe NaN. Wszystkie typy zera są traktowane jako równe.

Funkcja działa bardzo podobnie do wbudowanego operatora Perla <=>.Jedyną różnicą jest możliwośc porównywania liczby całkowitej z rzeczywistą gdy żadna nie może być przedstawiona w formacie tej drugiej

Tylko numeryczna wartość skalarów jest brana pod uwagę. Wartość tekstowa jest ignorowana.

sclnum_id_cmp(A, B)

To porównanie przydaje się do sortowania wartości numerycznych. Zwraca -1, 0 lub 1 wtedy gdy A powinna być przed, w te samej pozycji albo za B.

Kolejność jest następująca: NaNy, ujemna nieskończoność, wartość ujemne skończone, minus zero, zero bez znaku, plus zero, wartości dodatnie skończone, dodatnia nieskończoność.

Dodatkowa funkcja może służyc do sprawdzania jakiego typu zere dysponujemy.

Tylko numeryczna wartość skalarów jest brana pod uwagę. Wartość tekstowa jest ignorowana.

Dodatkowe informacje

Zobacz też Data::Float, Data::Integer, perlnumber(1)

Cała dokumentacja znajduje się na http://search.cpan.org/~zefram/Scalar-Number-0.001/lib/Scalar/Number.pm

Autor opracowania

P.B.

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.