Moduł Math::Round
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaSpis treści
Obsługa modułu Math::Round
Opis
Math::Round to moduł autorstwa Geoffrey'a Rommel'a - zawiera funkcje, które zaokrąglają liczby na kilka sposobów. Funkcje round oraz nearest są domyślnie eksportowane; inne są dostępne po napisaniu use ... qw(:all), wówczas wszystkie funkcje zostaną wyeksportowane.
Download
- Pakiet możemy pobrać z CPANu
Instalacja w systemie UNIX'owym
Po rozpakowaniu modułu wydajemy polecenia
perl Makefile.PL
make
make install
Jeżeli wszystko poszło zgodnie z planem, to możemy już korzystać z możliwości naszego nowego modułu. Sprawdzić, czy został pomyślnie zainstalowany możemy, pisząc chociażby takiego jednolinijkowca:
perl -e 'use Math::Round'
Pomyślne wykonanie programu (żadnych komunikatów) daje nadzieję, że moduł jest zainstalowany i będzie działał.
Dostępne funkcje
- round LIST - zaokrągla liczbę(y) do najbliższej liczby całkowitej. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Np. 2,5 staje się 3 a -2,5 staje się -3.
- round_even LIST - zaokrągla liczbę(y) do najbliższej liczby całkowitej. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglenie do najbliższej liczby parzystej). Np. 2,5 staje się 2; 3,5 na 4 a -2,5 staje się -2.
- round_odd LIST - zaokrągla liczbę(y) do najbliższej liczby całkowitej. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglenie do najbliższej liczby nieparzystej). Np. 3,5 staje się 3; 4,5 na 5 a -3,5 staje się -3.
- round_rand LIST - zaokrągla liczbę(y) do najbliższej liczby całkowitej. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglenie losowe (50% szans na daną wartość)).
- nearest TARGET, LIST -
zaokrągla liczbę(y) do najbliższej zadanej liczby całkowitej (np. dziesiątki, setki, 25-tki:). W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglone są wzwyż). Np.:
nearest(10, 44) yields 40 nearest(10, 46) 50 nearest(10, 45) 50 nearest(25, 328) 325 nearest(.1, 4.567) 4.6 nearest(10, -45) -50
- nearest_ceil TARGET, LIST) -
zaokrągla liczbę(y) do najbliższej zadanej liczby całkowitej (np. dziesiątki, setki, 25-tki:); element TARGET musi być dodatni. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglone są wzwyż). Np.:
nearest_ceil(10, 44) yields 40 nearest_ceil(10, 45) 50 nearest_ceil(10, -45) -40
- nearest_floor TARGET, LIST -
zaokrągla liczbę(y) do najbliższej zadanej liczby całkowitej (np. dziesiątki, setki, 25-tki:); element TARGET musi być dodatni. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglone są w dół). Np.:
nearest_floor(10, 44) yields 40 nearest_floor(10, 45) 40 nearest_floor(10, -45) -50
- nearest_rand TARGET, LIST - zaokrągla liczbę(y) do najbliższej zadanej liczby całkowitej (np. dziesiątki, setki, 25-tki:); element TARGET musi być dodatni. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Ale działanie jest nieco inne (w przypadku, gdy liczba jest tak samo blisko pomiędzy dwiema liczbami całkowitymi, zaokrąglone są losowo - 50% szans na zaokrąglenie wzwyż i 50% szans na zaokrąglenie w góre). Np.:
- nlowmult TARGET, LIST -
zwraca kolejną niższą wielokrotność liczb(y) z listy; element TARGET musi być dodatni. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Liczby, które są pośrodku dwiema wielokrotnościami są zaokrąglane w dół.
nlowmult(10, 44) yields 40 nlowmult(10, 46) 40 nlowmult(25, 328) 325 nlowmult(.1, 4.567) 4.5 nlowmult(10, -41) -50
- nhimult TARGET, LIST -
zwraca kolejną wyższą wielokrotność liczb(y) z listy; element TARGET musi być dodatni. W kontekście skalarnym zwraca pojedyńczą wartość; w kontkście listowym zwraca listę wartości. Liczby, które są pośrodku dwiema wielokrotnościami są zaokrąglane w górę.
nhimult(10, 44) yields 50 nhimult(10, 46) 50 nhimult(25, 328) 350 nhimult(.1, 4.512) 4.6 nhimult(10, -49) -40
Przykłady zastosowań modułu Math::Round
Przykład użycia modułu:
use Math::Round qw(...those desired... or :all);
use strict;
$rounded = round($scalar);
@rounded = round(LIST...);
$rounded = nearest($target, $scalar);
@rounded = nearest($target, LIST...);
Dodatkowe informacje
Pozwala na efektywne zaokrąglanie liczb.
Więcej informacji na stronie http://search.cpan.org/~grommel/Math-Round-0.06/Round.pm
Autor opracowania
Szymon Roziewski
Email: sroziews@manta.univ.gda.pl