P004
Zaokrąglanie kwot po przecinku


Access nie posiada funkcji podobnej do ZAOKR w Excelu, zaokrąglającej liczby do określonego miejsca po przecinku. Można jednak napisać własną, opierajacaą sie na wyrażeniu:

wynik=Int(liczba * 100 + 0,5) / 100   ' przykład zaokrąglania do 2 miejsca po przecinku

Bardzo ważne. Powyższa funkcja zadziała poprawnie tylko dla 'liczba' typu Waluta (Currency). Dla liczb zmiennoprzecinkowych pojedynczej lub podwójnej precyzji wynik zwracany przez Int może być nieprawidłowy. Można się o tym przekonać wykonując w oknie bezpośrednim (Okno analizy programu) proste doświadczenie:

Ponieważ typ Waluta przechowuje liczby stałoprzecinkowe z czterema miejscami po przecinku, zaokrąglanie powyżej trzeciego miejsca nie ma sensu
(np. Int(1.0000025@*1000000+0.5)/1000000).

Często proponowanym na grupie dyskusyjnej wyjściem jest stosowanie do zaokrągleń funkcji CInt i CLng, np. CInt(liczba*100)/100. Takie rozwiązanie, przy zaokraglaniu kwot nie jest zalecane z dwóch powodów:

(Tutaj znajdowała się moja wersja funkcji zaokrąglającej kwoty. Jednak po dyskusjach na grupie pl.comp.bazy-danych.msaccess, postanowiłem ją usunąć, ze wzgledu na prawdopodobnie zwracane nieprawidłowe wyniki. Zobacz wcześniejszą wersję strony)


Napisał: Stanley, 5 II 1999, modyfikacja 3 XII 2000
Źródło: Strony supportu producenta Q97524


[Strona główna] [Wyjście] [Poprzedni] [Następny]